0

我正在使用 ajax 处理阿拉伯字符中的数据,一切正常,我可以将阿拉伯字符存储到数据库中,我可以从数据库中检索阿拉伯字符并将其打印到屏幕上,一切正常,但我的问题是当我检查javascripte concole在谷歌浏览器上检查检索数据我无法显示阿拉伯字符,但打印是这样的(这只是示例,并非所有数据)

["\u0645\u062f\u064a\u0646\u0629","\u0645\u062f\u064a\u0646\u0629 \u062a\u0627\u0631\u064a\u062e\u064a\u0651\u0629","\u0634\u062e\u0635\u064a\u0651\]

我的意思是这样

在此处输入图像描述

4

1 回答 1

3

使用 JSON 时,字符串为 UTF-8,特殊字符编码为\u后跟 4 个十六进制字符。

在您的情况下,如果您尝试解码该字符串 - 例如,使用数组的第一项:

>>> str = "\u0645\u062f\u064a\u0646\u0629";
"مدينة"

我不读阿拉伯语,但这对我来说看起来像阿拉伯语:-)

即使 JSON看起来不太好,但这并不重要:重要的是,一旦 JSON 被解码,您就可以取回原始数据;而且,在这里,您似乎可以做到。


要在浏览器的控制台中获取原始的、解码的字符串(我想是出于调试目的),您应该能够使用您在应用程序中使用的相同 JS 库(如果有的话)JSON.parse()函数(我刚刚测试了这个实际上,在 Firefox 的控制台中)

>>> JSON.parse('"\u0645\u062f\u064a\u0646\u0629"');
"مدينة"

当然,您必须编写一些代码才能将解码后的值实际输出到浏览器的控制台(无论是“手动”还是从服务器获取 JSON 时);但由于浏览器的控制台它是一个调试工具,它似乎还可以。
默认情况下,控制台作为调试工具,输出它从服务器获取的原始 JSON 字符串——并且,使用 JSON,特殊字符被编码,你无能为力(除了解码 JSON 字符串并显示它你自己,如果你需要)


如果您想在每次从服务器获得结果时将解码后的字符串输出到控制台,则每次从服务器获得结果时都必须调用JSON.parse();然后输出它,可能使用console.log().

不过,不要忘记在分发您的应用程序/将其上传到生产服务器之前删除该调试代码。

于 2012-05-20T08:25:40.827 回答