json_encode()
我不会工作,当我使用AAO。 为什么? 我怎样才能得到它的工作?
在php
:
echo json_encode($arr);
在javascript
:
var theResponse = JSON.parse(xmlHttp.responseText);
当我alert()
的反应,和响应包含A,A或O,所述响应是= NULL
请帮我...
json_encode()
我不会工作,当我使用AAO。 为什么? 我怎样才能得到它的工作?
在php
:
echo json_encode($arr);
在javascript
:
var theResponse = JSON.parse(xmlHttp.responseText);
当我alert()
的反应,和响应包含A,A或O,所述响应是= NULL
请帮我...
报告说,在json_encode()
文档 :
此功能只适用于UTF-8编码的数据。
你应该把它与转换为UTF-8 的iconv或MBSTRING第一。
由于格雷格提到的,我不得不编码AAO到UTF-8
但我我以前不使用的iconv或MBSTRING。 当我utf8_encode()
把值到之前的所有值array
的问题得到解决。
此功能会投正确的数据类型为JSON输出和函数utf8_encode的字符串。
/* Change data-type from string to integar or float if required.
* If string detected then utf8_encode() it. */
function cast_data_types ($value) {
if (is_array($value)) {
$value = array_map('cast_data_types',$value);
return $value;
}
if (is_numeric($value)) {
if(strpos('.', $value)===false) return (float)$value;
return (int) $value;
}
return utf8_encode((string)$value);
}
json_encode (cast_data_types($data));
JSON字符串定义为Unicode!
JSON定义
你必须ISO编码您为UTF-8
老问题,但想我会在万一有人需要登录使用json_encode的数据,但保留数据不变,完整的检查后,把这个在这里。
您可以使用的数据进行编码生base64_encode
,那么它将会与json_encode
。 运行后,后来json_decode
,你可以用字符串解码base64_decode
,你会得到的原始数据不变。
使用标准方法从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
必须被包括在内,以便空字段(例如,日期时间字段)在输出保持空。
在$data
(对我来说)是文本值作为ISO-8859-1的数组。 下面的诀窍准备$data
与使用json_encode
。
function toUtf8(&$v, $k) {
$v = utf8_encode($v);
}
array_walk_recursive($data, 'toUtf8');
由于PHP 5.4.0的:
将您的字符串的阵列中为UTF-8使用函数utf8_encode($ STR)功能。
然后用JSON_UNESCAPED_UNICODE选项json_encode:
$ ARR = json_encode($阵列,JSON_UNESCAPED_UNICODE);