【发布时间】:2013-10-22 01:55:46
【问题描述】:
我有一个带有 3 个嵌套数组的简单 php 结构。
我不使用特定对象,而是使用 2 个嵌套循环构建自己的数组。
这是我要转换为 Json 的数组的 var_dump 示例。
array (size=2)
'tram B' =>
array (size=2)
0 =>
array (size=3)
'name' => string 'Ile Verte' (length=9)
'distance' => int 298
'stationID' => int 762
1 =>
array (size=3)
'name' => string 'La Tronche Hôpital' (length=18)
'distance' => int 425
'stationID' => int 771
16 =>
array (size=4)
0 =>
array (size=3)
'name' => string 'Bastille' (length=8)
'distance' => int 531
'stationID' => int 397
1 =>
array (size=3)
'name' => string 'Xavier Jouvin' (length=13)
'distance' => int 589
'stationID' => int 438
在另一个脚本中,我有类似的结构,json_encode 工作正常。
所以我不明白为什么json_encode 在这里不起作用。
编辑:编码似乎有问题。当mb_detect_encoding 返回 ASCII 时,json_encode 可以工作,但是当它返回 UTF8 时,它就不再工作了。
Edit2 : json_last_error() 返回 JSON_ERROR_UTF8 这意味着:Malformed UTF-8 characters, possibly incorrectly encoded。
【问题讨论】:
-
PHP 手册说
This function only works with UTF-8 encoded data.所以编码应该没有问题。 -
在将字符串交给
json_encode()之前,尝试在name数组字段上使用utf8_encode()。 -
谢谢!我刚刚来到这个解决我的问题的解决方案。
-
是的,看到了答案。祝你好运。
-
使用
JSON_PARTIAL_OUTPUT_ON_ERRORoption 来查看问题(例如,UTF8 的字段将为空)。