【问题标题】:JavaScriptSerializer not encoding Spanish Language Characters (net 2.0JavaScriptSerializer 不编码西班牙语字符(净 2.0
【发布时间】:2014-08-12 03:19:07
【问题描述】:

使用 .Net 2.0 System.Web.Extensions JavaScriptSerializer 序列化数据。

在下面的例子中:

JavaScriptSerializer ser = new JavaScriptSerializer();
string test = ser.Serialize("CAFÉ LATINO ' INC");

单引号被编码,而带重音的 E 不是。

“CAFÉ LATINO \u0027 INC”

这会导致错误 - SyntaxError: Unexpected end of input when I pass the data to JSON.Parse().

提前致谢

【问题讨论】:

    标签: json serialization javascriptserializer


    【解决方案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,然后瞧——我的所有字符现在都正确编码了。

    谢谢戴夫·沃德!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2011-10-30
      相关资源
      最近更新 更多