我在 IE11 中遇到了一个奇怪的问题。考虑以下内容(riot.js 框架的一部分):
var s = "{JSON.stringify(\\{ amount: Math.floor(reward.amount) \\})}";
var s1 = s.replace(/\\{/g, '\uFFF0');
在 localhost 上运行此代码时,它运行良好。但是在我们的暂存环境中运行时,\{
片段不会被替换为\uFFF0
(代码点 65520),而是被替换为(代码\uFFFD
点 65533)。这意味着它稍后在尝试将特殊字符替换回时失败{
。
该replace
方法是浏览器的本机方法。包含 HTML(字符串是 DOM 属性)和 javascript 的文件由服务器返回并带有charset=utf-8
标头并编码。在暂存环境中,它与其他文件捆绑在一起(尽管不是压缩或修改),并且仍然以 utf-8 编码。
我不知道它为什么这样做,或者为什么它不系统。