我有一个文本来自一个充满重音标记的CSV。我检查mb_check_encoding($my_text, 'utf-8')
是否为真,是的,是的。通过此文本,我生成了一个变量$json
,该变量应用
json_encode($json,JSON_NUMERIC_CHECK);
var_dump($json)
给出了一个数组,其中所有奇怪的标记都正确(é,ì等),但生成的JSON文本不正确(例如:"Donn'u00e9es"
而不是"Données"
)。
我知道json_encode
只适用于utf8编码的数据,这就是为什么我之前检查过它是utf8。我还尝试添加header("Content-type: application/json; charset=UTF-8");
,但没有成功。
那是什么原因呢?
JSON就是这样编码"奇怪的标记",即Unicode字符的。当您在JSON编码的字符串上使用json_decode()
时,它将恢复正常。