JavaScriptSerializer不编码西班牙语字符(net 2.0

时间:2014-08-05 19:43:27

标签: json serialization javascriptserializer

使用.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()时意外的输入结束。

提前致谢

1 个答案:

答案 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!