解决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 = "吃翔翔";
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的问题。

原文地址:https://www.cnblogs.com/karthuslorin/p/8184762.html

时间: 2024-07-30 03:42:36

解决JSON.stringify()自动将中文转译成unicode的方法的相关文章

JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值

在上一篇中,对JSON.stringify()方法有了初步的认识,并且做了一些简单的例子.本篇将进一步将JSON.stringify用在复杂些的实例中,例如如下需求: 在进jQuery AJAX异步传值时,用JSON.stringify()函数将数组转换成(JSON:JavaScript Object Notation 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式),再传到一般处理程序中,在一般处理程序中,把得到的值进行反序列化Deserialize<T>(v

IE8中JSON.stringify方法对自动转换unicode字符的解决方案

IE8内置了JSON对象,用以处理JSON数据.与标准方法的不同,IE8的JSON.stringify会把utf-8字符转码: var str = "我是程序员" var jsonstr = JSON.stringify(str) //""\u6211\u662f\u7a0b\u5e8f\u5458"" 一般情况下,我们是在向服务器发送数据的时候,才调用这个方法.服务器端可以正确的解析,所以没有什么问题.但是如果我们jsonstr还要在别的地方用

PHP Json函数不能处理中文的解决办法

PHP5.2 新增的 json 功能是非常受欢迎的,但是经过测试发现,json_encode对中文的处理是有问题的:    不能处理GB编码,所有的GB编码都会替换成空字符:    utf8编码的中文被编码成unicode编码,相当于javascript的escape函数处理的结果.    为了能正确使用json,首先我们就应该在编码上采用utf8编码,然后再对json_encode的返回结果稍加处理就可以得到正确的结果了.?1. [代码]php代码    <?php/*PHP5.2 新增的 j

有意思的JSON.parse()、JSON.stringify()

前言 现在JSON格式在web开发中非常重要,特别是在使用ajax开发项目的过程中,经常需要将后端响应的JSON格式的字符串返回到前端,前端解析成JS对象值(JSON 对象),再对页面进行渲染. 在数据传输过程中,JSON是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键. 1.JSON格式 简单说一下JSON格式,JSON格式就是一种表示一系列的"值"的方法,这些值包含在数组或对象之中,是它们的成员. 对于这一系列的&q

JSON.parse和JSON.stringify 参数详解

JSON.parse和JSON.stringify这两个浏览器自带(IE6/7除外)的方法平常我们经常用到,但是一般都只是用到了他们的第一个参数,比如字符串转对象:JSON.parse('{}')   对象转字符串:JSON.stringify({}) 今天特意看了下这两个方法的定义,第二个可选参数也是非常有用. 1. JSON.parse(text[, reviver]) text :     要被解析成JSON对象的字符串 reviver : 如果是一个函数,则规定了原始值如何被解析改造,在

php json数据保留原样中文

php转换json时, 其中的中文会转换成Unicode, 要保持原来中文的意思 /** * 将数组里面带有中文的字串保留以JSON格式返回 * * @param array $arr 数组 * @return string JSON格式的字符串 */ function toJson($arr) { $ajax = ToUrlencode($arr); $str_json = json_encode($ajax); return urldecode($str_json); } /** * 将数组

解决IE8 内置JSON.stringify,中文变unicode的问题

转自:http://my.oschina.net/u/919074/blog/191131 项目中出现在IE下出现把json对象转为json串中文变成unicode的问题,最后经过排查,发现是IE8内置JSON.stringify()引起的,解决方法如下: // 把json对象转为json串 var policy_content = JSON.stringify(data.jsonObject); policy_content={policy":[{"name":"

JSON.stringify()中文乱码

最近用json2.js来做客户端的JSON提交,使用了JSON.stringify()方法,结果发送到服务器端的Json里的中文变成了乱码. 查了一下资料才知道IE8支持原生的JSON对象,自带了JSON.parse与JSON.stringify两个方法.当我使用json2里的Json.stringify方法里IE默认调用了IE8的stringify方法进行了uncode编码,致使传到服务器后中文变成了乱码. 解决办法1:把Json2.js里的JSON改下名称,改成JSON2,这样调用:JSON

解决IE6 IE7 JSON.stringify JSON 未定义问题

在项目中引入json2.js 官方http://www.json.org/ 源码地址:https://github.com/douglascrockford/JSON-js $.ajax({ url: '/LicXXse/Add', contentType: "application/json; charset=utf-8", type: 'POST', data: JSON.stringify(PostData),//还是这样写即可 async: true, success: fun