为什么json_decode在utf8_decode之后返回null

时间:2014-08-25 10:07:14

标签: php json utf-8 special-characters

我从包含Unicode字符的数据库中检索了一个字符串, 在那之后我对它们进行了utf8_decoded,以便我能清楚地阅读它们,

然后我将字符串传递给json_decode,但它返回null! 如果没有utf8_decode,json_decode将返回一个包含é个字符的数组。

1 个答案:

答案 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 throughHandling Unicode Front To Back In A Web AppWhat Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text