最近做项目中出现在IE8下出现把json对象转为json串中文变成unicode的问题,看网上的资料说,发现是IE8内置JSON.stringify()引起的
// 把json对象转为json串
var policy_content = JSON.stringify(data.jsonObject); policy_content={policy”:[{"name":"must_installed","enabled":1,"key_check":1,"content":{"must_installed_list":["\u641c\u72d7"]}
,”desc”:”\u5fc5\u987b\u5b89\u88c5\u8f6f\u4ef6″}]}
但是用eval(” var g_policy = ‘”+policy_content+”‘;”)进行转换的时候,调试控制台显示eval无法解析“\u5fc5\u987b\u5b89\u88c5\u8f6f\u4ef6”,但是用alert(policy_content)的时候,又会显示出中文,只不过传输到C#后台的时候,还是一串unicode字符类型。
后来找到一种解决的办法是把页面的<!DOCTYPE html>声明去掉,这样做之后C#后台得到的是中文,不过没有html声明的dtd文件约束页面格式,jDialog弹出的层样式又乱了。
求大神帮忙解决一下,感谢!
注:IE版本号 8.7600.16385
内置的这个问题多多
如果要兼容不同的浏览器,最好使用库,如json2.js等
我引用了json2.js,但是json2检测到IE8定义了JSON.stringify()这个方法,json2的方法默认就不启用了,网上有人说把json2 的JSON改成JSON2,使用JSON2.stringify(),但是我把json2.js的“JSON”都替换为JSON2之后,用JSON2.stringify()显示方法未定义,请问怎么解决这个问题?
@Leon719: 这的确是IE8的一个bug,找到两篇文章:
http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/05/15/ie8-json-bug.aspx
http://www.touding.com/member/user.asp?id=880693&ty=q
@2012: 这些页面方法我看过了,就是不知道怎么把json2.js里边的json.stringify()方法改成json2.stringify(),请问你知道吗?
我用这个方法解决不了,如果是\xx\xx这样的编码,用eval()是可以转成中文,我试过,但是\u987b\u987b这样的编码,用eval转换的时候会报错,但是在控制台里边看,报错下面一行是有正确的中文的。我觉得很费解
怎么解决的啊? 我也到这样的问题了。