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

时间: 2018-01-05阅读: 1310标签: 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的问题

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

Js中json对象与json字符串相互转换的几种方式

使用JSON.stringify()方法进行转换,JSON字符串转化为JSON对象使用 eval() 转换时需要在 json 字符外包裹一对小括号。使用JSON.parse()方法进行转换ie8(兼容模式)、ie7、ie6 不要使用此方法。

js中Json相关知识

JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。JSON与JS对象互转要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法, 要实现从JS对象转换为JSON字符串,使用 JSON.stringify()

Js把CSV与Excel转为Json

有两个 JavaScript 插件可用于读取和处理 CSV 和 Excel 文件,之后仅对自己的脚本进行编码即可。CSV 表示 :用逗号分隔值,这是一种文件格式,用于存储表格数据,如电子表格或数据库等

js之map及转换json、Object

set map<=>object map转obj,因为map打印出来其实是数组里套长度为二的数组,和java的不同 Object.create(null)、Object.create({}),{}的不同创建对象的区别 第一个,默认是null对象,啥方法都没有、后两个一样继承了object类,有两个内置方法

json结构化数据格式

JSON是javascript的子类,也是作为更好的互联网传输结构化数据格式逐渐取代XML,因此要理解JSON,重要的是理解它是一种数据格式,不是一种编程语言。

package.json文件介绍

每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息。npm install命令根据这个配置文件,自动下载所需的模块。

JSON.parse 三种实现方式

近日在翻红宝书,看到 JSON 那一章节,忽然想到:“如何用 JS 实现 JSON.parse?”带着这个疑问,我找到了 JSON 之父 Douglas Crockford 写的 ployfill,里面提供了三种实现方式,下面我们逐一来分析。

JS中解决JSON中函数及对象的深度拷贝

在JS中对于普通的json, 可用如下方式进行简单的深度拷贝,不过当json中包含一些JS中的对象及函数的时候, 用这样的方法会使数据丢失, 并且这个无法解决循环引用的问题,

为什么json 不能使用 int64类型

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集

对json的理解?

JSON对象:以 {开始,以}结束,里面则是一系列的键(key)值(value)对,其中键(key) 是字符串,而值(value)可以是字符串,数值,true, false,null,对象或数组,也就是说某个键(key) 的值(value)可以是一个数组

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

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

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