我已经在 php 文件中编码了波斯语名称。在编码之前,它显示正确,在编码之后,它将转换为utf-8字符。
我正在Ajax的Java脚本(jQuery)中收到它。

sample.php:

json_encode('نام خانوادگی ');

//after encode: "\u06a9\u0627\u0638\u0645\u06a9\u06cc"

Js:
JSON.parse(response)
// it is still in this form: \u06a9\u0627\u0638\u0645 \u06a9\u06cc

我如何解析此json,以便可以将其保留为原始格式?

最佳答案

这与UTF-8无关,但与Unicode无关。区别在于:

var original = "\u06a9\u0627\u0638\u0645\u06a9\u06cc"
var encoded = "\\u06a9\\u0627\\u0638\\u0645\\u06a9\\u06cc"

您必须将表示Unicode表示法的字符串转换回原始字符串。用这个:
var r = encoded.replace(/\\u(....)/gi, function(m,v){
    return String.fromCharCode(parseInt(v,16))
})
alert(r)

07-25 23:06