解决IE8下JSON.stringify()自动将中文转译成unicode的方法

时间: 2018-01-05阅读: 1565标签: json

最近在工作中,发现在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 = "吃翔翔";
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的问题

站长推荐

1.阿里云: 本站目前使用的是阿里云主机,安全/可靠/稳定。点击领取2000元代金券、了解最新阿里云产品的各种优惠活动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各类产品的最新活动,优惠券领取点击进入

3.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/323

javascript怎么判断是否为json?

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据

JSON.parse和JSON.stringify的巧用

JSON.parse和JSON.stringify是对json数据的转换,在js中使用的频率还是非常高的,比如localStorage,cookie中对复合型数据的存储,与服务器进行数据交互的格式转换等等。

JSON.parse 比 Object 字面量语法更快

因为 JSON 语法比 Javascript 的语法更简单,因此解析 JSON 比解析 Javascript 更高效。当一个 web app 需要加载在首次加载时,解析一个非常复杂的、大型的、符合 JSON 规范的对象字面量配置对象时

javascript怎么解析json?

JavaScript解析json数据,可以使用JSON.parse()方法来实现解析。JSON.parse()方法可以解析JSON字符串,转换为 JavaScript 对象。

js实现json数据格式化及压缩

经常写代码就免不了与json这种轻量级的数据打交道,一般我们得到的json字符串是混乱的,计算机不在乎,再乱它都能认识,作为人类,虽然也能认识,但识读起来比较困难。

json与jsonp的使用

在ajax中 JSON用来解决数据交换问题,而JSONP来实现跨域。备注:跨域也可以通过服务器端代理来解决;理解:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。

JavaScript JSON

JSON 是存储和传输数据的格式。JSON 经常在数据从服务器发送到网页时使用。JSON 指的是 JavaScript Object Notation,JSON 是轻量级的数据交换格式

[Object Object] 解决方案 JSON.stringify()

[object Object] 表示的就只是一个对象,当前对象 toString() 没有正确解析,可以使用 JSON.stringify() 来避免这个问题。 Json.stringify() 是序列化函数,用于将对象转化为字符串;

sessionstorage中存储JSON数据

在web开发时,可能经常会用到sessionstorage存储数据,存储单个字符串数据变量时并不困难,但是sessionStorage只能存储字符串类型数据,无法直接存储数组类型和JSON对象

JSON.stringfy()的使用

value 被序列化为字符串的对象;replacer 根据类型不同,其行为也不一样。如果是一个函数类型,则相当于是一个filter,可以对序列化的键值对进行加工处理;如果是一个数组,则只有符合数组中名称的key才会被输出

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广