json_encode()
对我不起作用。为什么?我怎样才能让它发挥作用?
php
:
echo json_encode($arr);
javascript
:
var theResponse = JSON.parse(xmlHttp.responseText);
当我alert()
回复,而回复包含å,ä或ö时,回复为= NULL
请帮帮我......
答案 0 :(得分:12)
答案 1 :(得分:7)
正如格雷格所说,我不得不将åäö编码为UTF-8
。但我没有使用iconv或mbstring。当utf8_encode()
将所有值放入array
之前,问题就解决了。
答案 2 :(得分:2)
答案 3 :(得分:1)
老问题,但我想把它放在这里,以防有人需要使用json_encode记录数据,但保持数据不变,完好无损,以便以后检查。
您可以使用base64_encode
对原始数据进行编码,然后它将与json_encode
一起使用。运行json_decode
后,您可以使用base64_decode
对字符串进行解码,您将获得未修改的原始数据。
答案 4 :(得分:0)
从MySQL读取时使用标准方法:
$resultArray = array();
while($obj = MySQL_fetch_object($res)) {
$resultArray[] = $obj;
}
$result = json_encode($resultArray);
可以使用以下方法完成编码:
$resultArray = array();
while($obj = MySQL_fetch_object($res)) {
foreach($obj as $key => $value) {
if (!is_null($value)) {
$obj->$key = utf8_encode($value);
}
}
$resultArray[] = $obj;
}
$result = json_encode($resultArray);
必须包含if is_null
,以便输出中的空字段(例如,DateTime字段)保持为空。
答案 5 :(得分:0)
$data
(在我的情况下)是一个文本值为 ISO-8859-1 的数组。以下技巧准备$data
与json_encode
一起使用。
function toUtf8(&$v, $k) {
$v = utf8_encode($v);
}
array_walk_recursive($data, 'toUtf8');
答案 6 :(得分:0)
从PHP 5.4.0开始:
使用utf8_encode($ str)函数将数组中的字符串转换为utf-8。
然后使用JSON_UNESCAPED_UNICODE选项的json_encode:
$ arr = json_encode($ array,JSON_UNESCAPED_UNICODE);