我从包含Unicode字符的数据库中检索了一个字符串, 在那之后我对它们进行了utf8_decoded,以便我能清楚地阅读它们,
然后我将字符串传递给json_decode
,但它返回null!
如果没有utf8_decode,json_decode
将返回一个包含é
个字符的数组。
答案 0 :(得分:1)
utf8_decode
将字符串的编码从UTF-8转换为ISO-8859-1,a.k.a。Latin-1。
json_decode
期望,要求并返回UTF-8编码的字符串
这就是为什么它显然不起作用。
从数据库中获得的字符串显然是UTF-8编码的,这很好。在解码JSON之前,不得将其转换为Latin-1。你 之后也不会转换它,只需将所有内容保存在UTF-8中。您遇到的唯一问题是您没有正确指示您的浏览器处理UTF-8。快速回答是设置正确的HTTP标头:
header('Content-Type: text/html; charset=UTF-8');
对于更长,更细致的答案,请参阅UTF-8 all the way through,Handling Unicode Front To Back In A Web App和What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text。