IE8内置了JSON对象,用以处理JSON数据。与标准方法的不同,IE8的JSON.stringify会把utf-8字符转码:

    var str = "我是程序员"
var jsonstr = JSON.stringify(str) //""\u6211\u662f\u7a0b\u5e8f\u5458""

一般情况下,我们是在向服务器发送数据的时候,才调用这个方法。服务器端可以正确的解析,所以没有什么问题。但是如果我们jsonstr还要在别的地方用到,那就需要做一些处理。

一种方法是使用eval:

    var parsed = eval('('+jsonstr+')') //"我是程序员"

但是,当我们对str调用了不止一次的话,这样的方法还行吗:

    var str = '我是程序员'
var jsonstr = JSON.stringify(str)
var another_jsonstr = JSON.stringify(jsonstr) //
var another_parsed = eval('('+another_jsonstr+')')
another_parsed //""\u6211\u662f\u7a0b\u5e8f\u5458""

事实证明是不行的,那么我们写一个方法,如果发现解析的结果有utf-8码,就认为该字符串未解析完全,继续调用eval解析:

  function IE8parse(json) {
var re = /\\u[0-9A-Fa-f]{4}/,
result
result = eval('(' + json + ')')
while (re.test(result)) {
result = eval('(' + result + ')')
}
return result
}
  IE8parse(another_jsonstr) //"我是程序员"

另一种方法是把IE8的JSON.stringify方法做一些处理,把它转化后的字符串中的utf-8码转化回字符,注意,由于utf-8是可变长度编码,所以当遇到非单字节字符时,这种解析方式会出问题(目前测试只在IE8中会出现,例如“\uD842\uDFB7”,对应的汉字为 "

IE8中JSON.stringify方法对自动转换unicode字符的解决方案的更多相关文章

  1. JS中JSON.stringify()方法,将js对象(json串)转换成字符串,传入服务器

    JSON 通常用于与服务端交换数据. 在向服务器发送数据时一般是字符串. 我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串. 语法 JSON.string ...

  2. JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

    JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

  3. JSON.stringify 方法

    浅谈 JSON.stringify 方法   用过 json 的应该都知道,把一个对象通过 stringify 之后提交给后台或者存储在 Storage 里是很常用的手段.但是 IE6-8 下没有 J ...

  4. javascirpt的json.stringify()方法在IE浏览器兼容性模式下出错的原因与解决办法

    今天开机混底薪的时候遇到一个JSON.stringify()在IE浏览器兼容模式下的问题. 问题描述 一个弹窗选择的功能原来好好的,突然就不行了. 想要调试调试不了,报错信息也看不到(一开F12这破I ...

  5. java 写入int型时会自动转换成字符

    java  写入int型时会自动转换成字符

  6. 浅谈 JSON.stringify 方法

    一.前言 最近项目中,遇到需要将对象转换成字符串进行传递,上次写过一篇文章关于json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值.当时主要是用在有时候处理字符串和 ...

  7. Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语 ...

  8. JSON.parse和JSON.stringify方法

    1.JSON.parse(“要转换的数据”) 2.JSON.stringify(“要转化的数据”) 3.首先,两个方法的用法是有差别的: ①.JSON.stringify是从一个对象中解析出字符串 ② ...

  9. MJExtension(JSON到数据模型的自动转换)

    整理自:http://www.jianshu.com/p/93c242452b9b. 1.MJExtension的功能 字典-->模型 模型-->字典 字典数组-->模型数组 模型数 ...

随机推荐

  1. 009 The Interfaces In JAVA(官网文档翻译)

    Interfaces There are a number of situations in software engineering when it is important for dispara ...

  2. SDUT 3347 数据结构实验之数组三:快速转置

    数据结构实验之数组三:快速转置 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 转置运算是一 ...

  3. mysql中NULL和null的区别

    接触php的web开发一段时间了,在进行数据库操作的时候经常会遇到一个问题,使得同一字段在页面显示时有3种类型NULL,null以及数字,当时的解决办法是将这一字段定义为varchar类型,在插入数据 ...

  4. [HttpException (0x80004005): The current identity

    [HttpException (0x80004005): The current identity (IIS APPPOOL\NationalUnion.Shared) does not have w ...

  5. eclipse打开出错 Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'

    eclipse出现注册错误:①在“打开”输入框中输入“regedit”命令,删除注册表的HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\  的INSTALLDIR删除. 或者 ...

  6. ng-class ionic

    我发现 ng-class="{yourclass:true,outerclass:false}" 竟然不起作用...囧.... 幸好有Google  .... <p ng-c ...

  7. java SimpleDateFormat

    心碎了.

  8. WP_图片管理机制/异步读取网络图片

    项目有这样的需求, 要求窗口加载一揽子图片,为了不让UI阻塞太久,采用异步读取后绑定显示的方案. 图片的下载应该采用并发的过程(等待网络响应会很耗时,一张一张的下载,等待时间太长) 图片的下载不能占用 ...

  9. leetcode 118

    118. Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, ...

  10. Javascript之严格模式详解

    一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...