javascript - ASP.NET MVC 上使用 JavaScriptSerializer 进行 Unicode 字符转义取决于配置?

标签 javascript asp.net asp.net-mvc json unicode

使用

序列化 JSON 字符串时

JavaScriptSerializer.Serialize(模型)

某些 Unicode 字符(如 U+2028(行分隔符))在一种环境中会被转义,而在另一种环境中则不会。

问题是,在本地开发时,该字符在该序列化函数返回的 JSON 字符串中被转义为\u2028,但在另一个环境中,该字符不会被转义,从而破坏 JavaScript。浏览器发现这个字符真正呈现,它是 JavaScript 的行终止符,是 illegal :

Chrome 控制台错误:

Uncaught SyntaxError: Unexpected token ILLEGAL

服务器使用 IIS 7.5 和 ASP.NET MVC 4,并且序列化完全相同的数据。

什么可能影响此 JavaScriptSerializer 处理这些字符的方式?这 两种环境上的 .NET 版本均为 4.0.30319。

最佳答案

我怀疑开发环境中安装了 .NET FW 4 的更新,但服务器上并未安装该更新。我无法确切地知道这个问题是通过框架的哪个补丁得到解决的。至少4.0.30319版本(如发布的)似乎仍然存在此问题。

.NET 4.5.1,您可以在 reference source 中查看已修复此问题。

我们找到的解决方案是迁移到 Newtonsoft JSON 并使用该序列化程序。

关于javascript - ASP.NET MVC 上使用 JavaScriptSerializer 进行 Unicode 字符转义取决于配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24175062/

相关文章:

c# - ASP.NET MVC - 填充常用的下拉列表

javascript - .ejs 模板中的 Bootstrap 分页

javascript - 为什么变量立即执行窗口对象而不存储它?

javascript - 使用 Javascript 创建动态 asp.net 标签

asp.net-mvc - MVC 处理部分 View 模型中的集合项索引

c# - PM 给我 ERROR : Type is not resolved for member. .on any migration command

javascript - 任何人都可以看到这个 js/jQuery 有什么问题吗?

javascript - 使用 JavaScript 跟踪所有点击的元素

c# - 在 View 之间传递变量

c# - 如何在ASP.Net上传控件中指定文件扩展名?