1JSON.stringify会自动把所要转换内容中的汉字转换为Unicode编码
2浏览器间有差别,个别浏览器会把将要提交表单内容中的Unicode编码自动转为汉字(Chrome自动转换,IE不转)
3Web服务器,可能也有区别对待,其他的不清楚,IIS5不转换,IIS7自动转换(题外话,IIS5不支持SSI指令,IIS7支持)。
浏览器—1—提交表单——Web服务器—2—asp解析器
Chrome在1处,在表单提交到服务器前转码。
IIS7在2处在把表单数据交给asp解析器前转码。
用JSON.stringify转换再提交的内容中如果有汉字则需要特别处理。
1不用管他,交给web服务器处理。
2改JSON.stringify,看那JS代码我就放弃了。
3加后台代码转换,在网上找了个。
http://www.cnblogs.com/guardianf/archive/2012/08/21/2649147.html这里有Unicode编码转汉字的功能代码
1
2
3
4
5
6
7
8
9
10
11
12
|
public static string unicodetogb( string text)
{
System.Text.RegularExpressions.MatchCollection
mc = System.Text.RegularExpressions.Regex.Matches(text, "\\\\u([\\w]{4})" );
string a
= text.Replace( "\\u" ,
"" );
char []
arr = new char [mc.Count];
for ( int i
= 0; i < arr.Length; i++)
{
arr[i]
= ( char )Convert.ToInt32(a.Substring(i
* 4, 4), 16);
}
string c
= new string (arr);
return c;
}
|
说下个人的调试经历。
项目内容是在线考试
JSON.stringify 功能为从一个对象解析为字符串
JSON.stringify(jsondata.table) 会把表中的"单选"转为"\u5355\u9009" 作为JSON字符串提交。
在IE调试VS调试时回传的数据为
"id":"10337","answer":"","rightanswer":"C","type":"\u5355\u9009"
服务端再把JSON转为DataTable
DataTable dt = JsonToDataTable(table);
而这个方法转回的结果,没有对Unicode编码作处理。
第一次的代码。
string qt = dt.Rows[i]["\"type\""].ToString();
if (qt == "单选")
需要验证是题型,算分值,但因为表中数据是"\u5355\u9009"编码,匹配不上。
因为用的地方不多,我想了想还是直接这么改。
if (qt == @"\u5355\u9009");
算是调试过了。可以得到分值,但之后又碰上问题。
本地调试,正确,发布到本地的IIS上也正确,但发布到服务器上,就出错了(确切的说不是出错,是统计结果为0,要按题型算分值,题型匹配不上,题刑分值为0,总分也就为0)
我折腾了1个多小时没找到问题所在,本地的IIS调试,正确。服务器有点问题,而且来公司没多久,你们懂的。
突然就想IE是这样,其他浏览器呢?
想看看Chorm在各版本下的结果,VS,本地IIS,服务器IIS。
Chrome本地居然也是结果0,不过虽然结果是错了,却隐约感觉到错误所在。
不走IE调试,用Chrome调试,查断点,Chrome回发的数据就是"单选",不是IE的"\u5355\u9009"。
Chrome提交数据时自动把Unicode编码转为了汉字了。
if (qt == @"\u5355\u9009")的结果显而易见。
所以改为这样,结果就正常了。
if (qt == @"\u5355\u9009" || qt == "单选")
再发布到服务器,也正常。一定是服务器的IIS服务也自动把表单里的Unicode编码转为汉字。
分享到:
相关推荐
标题中的“JSON.stringify()报错:JSON未定义”是一个常见的JavaScript错误,通常出现在尝试使用`JSON.stringify()`方法但全局环境中没有定义JSON对象时。在浏览器环境中,JSON是默认支持的,但在某些旧版本的IE...
综上所述,`JSON.stringify` 提供了一个强大的工具来将JavaScript数据结构转换为JSON字符串,适用于多种应用场景,特别是数据交换和存储。正确地理解和使用其提供的参数选项,可以极大地提升开发效率并确保数据的...
主要介绍了JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能,结合实例形式分析了JSON.parse()与JSON.stringify()方法实现深拷贝的相关实现技巧与操作注意事项,需要的朋友可以参考下
下面我们将详细探讨几种常见的将前端对象转换为JSON并使用`JSON.stringify()`的方法。 1. **直接使用`JSON.stringify()`** `JSON.stringify()`是JavaScript内置的函数,用于将一个JavaScript值(对象或数组)转换...
jsp使用JSON.stringify()引用的json2.js
JSON.stringify 是 JavaScript 中用于将 JavaScript 对象转换成 JSON 字符串的一个关键方法。这个方法的主要目的是将非字符串数据类型,如对象、数组等,转换成字符串格式,以便于存储、传输或与服务器交换数据。 ...
JSON.stringify在使用时,IE6、7、8会存在兼容问题,需导入json2.js
JavaScript 内置的 JSON.stringify 和 JSON.parse 方法,为开发者提供了便捷的JSON数据序列化和反序列化能力。本文将深入探讨这两个方法的工作原理、使用场景以及一些高级技巧。 JSON.stringify 和 JSON.parse 是 ...
处理IE6,7,360下 的JSON.stringify 无法使用问题;
json-stringify-safe, 在循环引用( 如 JSON.stringify ) 上,但不引发 json-stringify-safe类似 JSON.stringify,但不引发循环引用。用法采用与 JSON.stringify 相同的参数。var stringify = require('json-...
但是,需要特别注意的是,如果在项目中同时存在原生`JSON`对象和`json2.js`库中的`JSON`对象,有时会出现混淆,导致`json2.js`的`JSON.stringify()`方法被调用。为解决这个问题,可以将`json2.js`中的`JSON`对象改为...
JSON.stringify() 和 JSON.parse() 是JavaScript中用于处理JSON数据的两个关键函数,它们在JSON对象序列化和反序列化过程中起着至关重要的作用。 一、JSON.stringify() JSON.stringify() 的主要功能是将JavaScript...
解决JSON.stringify在使用时,IE6、7、8会存在兼容问题。
在IE6、7下使用JSON.stringify()方法兼容JS脚本
需要注意的是,虽然这种做法可以解决日期时间转换不准确的问题,但需要注意它的影响范围。因为Date.prototype是所有Date实例共享的原型对象,修改它会影响到全局的Date对象的行为。如果存在其他依赖默认toJSON行为的...
在使用JSON.parse和JSON.stringify时,还需要注意几个细节。首先,JSON字符串格式必须严格遵守JSON的标准,否则解析会失败。其次,由于JSON.stringify可以进行一些额外的转换和过滤操作,所以在转换某些特殊类型的...
JSON.parse() 和 JSON.stringify() 是JavaScript中用于处理JSON数据的两个重要方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它们常被用于...
json-stringify-确定性 确定性版本的JSON.stringify() ,因此您可以从字符串化的结果中获得一致的哈希值。 与相似,但: 没有依赖关系。 尽量少。 更好的循环检测。 支持对不带.toJSON对象(例如RegExp )进行...