有一个编码为 的字符串UTF-8
,例如
var strjson = '{"Header": "\u0420\u040e\u0421\u0453\u0420\u0458\u0420\u0458\u0420\u00b0, \u0420\u0491\u0420\u0455\u0421\u0403\u0421\u201a\u0421\u0453\u0420\u0457\u0420\u0405\u0420\u00b0\u0421\u040f \u0420\u0491\u0420\u00bb\u0421\u040f \u0420\u0406\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u201a\u0420\u00b0, \u0421\u0402\u0421\u0453\u0420\u00b1."}';
我把它传入js
并像这样解码
var json = JSON.parse(strjson);
我在控制台中得到什么
Header: "Сумма, доступная для возврата, руб."
虽然如果我现在去任何在线解码服务,例如,并在那里插入至少原始的,至少收到的,我会得到我需要的(服务说,原始的UTF-8
,显示为 windows-1251)
Header: "Сумма, доступная для возврата, руб."
这是为什么?如何正确解析浏览器中收到json
的js
内容?
页面写入utf8
<meta charset="UTF-8">
并且html
文件本身是编码的,utf8
在记事本中打开它,我在西里尔字母中看到相同的曲线,这意味着文本也在 中utf8
,这是怎么回事?为什么js
会这样显示?
UPD。
谢谢大家,问题出在delphi tsuperobject中-它破坏了utf8编码,在将其传递给它之前将其解码为1251,问题就消失了。谢谢大家!
JSON := SO( Utf8ToAnsi( Data) );
问题出在编码器上。在 json
\u0000
中,UTF16 中的代码应该通过,但是你有一些 UTF8 的东西。一般来说,西里尔字母通常可以按原样发送,而不是变成代码。