解决JSON.stringify()⾃动将中⽂转译成unicode的问题
最近在⼯作中,发现在IE8下JSON.stringify()⾃动将中⽂转译为unicode编码,原本选择的中⽂字符,传到后台变为了unicode 编码,即\u****的形式。查资料后发现,与标准的JSON.stringify()不同,IE8内置的JSON.stringify()会⾃动将编码从utf-8转为unicode编码,导致出现这种类似于乱码的情况。
解决⽅法分为两种,第⼀种是后台接收到数据之后,将该数据再进⾏⼀次转码,重新转为utf-8,然后再保存到数据库中,这样,再次从数据库取出传给前端的数据将变成utf-8格式(即正常的中⽂)。第⼆种则是不管在IE8下还是⾼级浏览器中,使⽤eval()统⼀进⾏转码,最后的结果都为utf-8编码。
本⽂主要讲解第⼆种⽅法,即使⽤eval()转码的⽅法。在MDN上,eval()的解释是:eval()的参数是⼀个字符串。如果字符串表⽰的是表达式,eval()会对表达式进⾏求值。如果参数表⽰⼀个或多个JavaScript语句,那么eval()就会执⾏这些语句。
var a = "吃翔翔";
中文字符unicode查询
var unicodeJsonA = JSON.stringify("a");  //unicode
var jsonA = eval('(' + unicodeJsonA + ')');  //utf-8
如上代码,通过eval()执⾏,强⾏将unicode转码为utf-8,⽆论JSON.stringify()后出来的结果是utf-8还是unicode,统⼀转为utf-8格式。
其实,解决的⽅法还有第三种——使⽤json2.js中的JSON.stringify()代替IE8的JSON.stingify()。但是,当有浏览器⾃带的JSON对象时,会启⽤浏览器⾃带的JSON对象代替json2.js中的JSON对象。为了解决这个问题,可以将json2.js中的JSON对象改为JSON2对象,即将JSON.stringify()改为JSON2.stringify()。
以上⼏种⽅法皆可解决IE8下⾃动将中⽂转译为unicode的问题。
以上这篇解决JSON.stringify()⾃动将中⽂转译成unicode的问题就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。