使用.Net 2.0 System.Web.Extensions JavaScriptSerializer来序列化数据。
在以下示例中:
JavaScriptSerializer ser = new JavaScriptSerializer();
string test = ser.Serialize(“CAFÉLATINO'INC”);
单引号是编码的,而带重音的E则不是。
“CAFÉLATINO\ u0027 INC”
这导致错误 - SyntaxError:将数据传递给JSON.Parse()时意外的输入结束。
提前致谢
答案 0 :(得分:1)
我的问题是我使用的是手动JSON序列化:
JavaScriptSerializer ser = new JavaScriptSerializer();
string strResponse = ser.Serialize(branches);
Context.Response.Clear();
Context.Response.ContentEncoding = Encoding.UTF8;
Context.Response.ContentType = "application/json";
Context.Response.AddHeader("content-length", strResponse.Length.ToString());
Context.Response.Flush();
Context.Response.Write(strResponse);
我的数据中的重音字符(我怀疑其他非英文字符也没有编码)。
我找到了这篇文章: http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/
我将代码更改为不手动序列化JSON和voilà - 我的所有字符现在都可以正确编码。
谢谢Dave Ward!