【发布时间】:2015-08-07 22:51:16
【问题描述】:
我已经阅读了一堆不同的 StackOverflow 答案和类似的问题,但都没有任何帮助。
我正在使用 Javascript 发出 ajax 请求以获取一些 json 格式的数据。
我正在接收如下 json 数据:
\u0093title\u0094
现在我相信 json 默认以 utf-8 格式传递,但是这些字符 \u0093 和 \u0094 我相信是 latin1 控制字符,用于表示打开和关闭语音标记。
问题是当我使用 Javascript 进行 GET 时,响应最终是这样的:
“title”
我尝试过 encodeURIComponent( data.body )) 并产生相同的结果
这很烦人,以前有没有其他人遇到过这些问题?
编辑:
想象一下以下原始 JSON 数据,这就是我要检索的内容:
\u0093title\u0094
例如,我运行以下 jQuery/Javascript 来获取上述 JSON 数据
$.ajax({
type: "GET",
url: "myurl",
success: function(data){
console.log(data.body);
}
});
以下内容打印到控制台(看起来不错,除了省略了控制字符):
title
然后我对其进行编码和解码,这应该会抵消并且什么都不会改变:
console.log(decodeURIComponent(encodeURIComponent( data.body )))
除非这最终打印以下内容:
“title”
它在哪里提取了那些额外的Â 字符以及“ 和”,尽管这些字符在编码/解码步骤之前没有显示在控制台中
【问题讨论】:
-
您在 HTML 中打印
“title”是吗? -
基本上是的,或者如果我将它打印到调试控制台,它也会像那样出来
-
您是否将字符集设置为 utf8?
<meta charset="utf-8"> -
没用,我在页面加载和渲染后注入脚本
-
U+0093和U+0094是不可打印的字符。你确定你不是指弯引号?
标签: javascript utf-8 iso-8859-1 latin1