解决JSON.stringify()自动将中文转译成unicode的问题

2019-11-16,,,,

最近在工作中,发现在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的问题。

以上这篇解决JSON.stringify()自动将中文转译成unicode的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持北冥有鱼。

您可能感兴趣的文章:

  • 详解如何提升JSON.stringify()的性能
  • 详解关于JSON.parse()和JSON.stringify()的性能小测试
  • JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
  • JSON.stringify()方法讲解
  • JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
  • 你可能不知道的JSON.stringify()详解
  • JS实现JSON.stringify的实例代码讲解
  • JSON中key动态设置及JSON.parse和JSON.stringify()的区别
  • 浅谈JSON.stringify()和JOSN.parse()方法的不同
  • 关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
  • jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
  • 深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
  • 谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
  • 浅谈JSON.parse()和JSON.stringify()
  • 浅谈JSON中stringify 函数、toJosn函数和parse函数
  • JSON.stringify转换JSON时日期时间不准确的解决方法
  • JSON.parse()和JSON.stringify()使用介绍
  • 打印json对象的内容及JSON.stringify函数应用
  • js解析与序列化json数据(一)json.stringify()的基本用法
  • JSON.stringify 语法实例讲解
  • js JSON.stringify()基础详解

《解决JSON.stringify()自动将中文转译成unicode的问题.doc》

下载本文的Word格式文档,以方便收藏与打印。