如何获得json_encode()与ISO-8859-1(AAO)工作(How to get jso

2019-07-05 18:29发布

json_encode()我不会工作,当我使用AAO。 为什么? 我怎样才能得到它的工作?

php

echo json_encode($arr);

javascript

var theResponse = JSON.parse(xmlHttp.responseText);

当我alert()的反应,和响应包含A,A或O,所述响应是= NULL

请帮我...

Answer 1:

报告说,在json_encode()文档 :

此功能只适用于UTF-8编码的数据。

你应该把它与转换为UTF-8 的iconv或MBSTRING第一。



Answer 2:

由于格雷格提到的,我不得不编码AAO到UTF-8 但我我以前不使用的iconv或MBSTRING。 当我utf8_encode()把值到之前的所有值array的问题得到解决。



Answer 3:

此功能会投正确的数据类型为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));


Answer 4:

JSON字符串定义为Unicode!

JSON定义

你必须ISO编码您为UTF-8



Answer 5:

老问题,但想我会在万一有人需要登录使用json_encode的数据,但保留数据不变,完整的检查后,把这个在这里。

您可以使用的数据进行编码生base64_encode ,那么它将会与json_encode 。 运行后,后来json_decode ,你可以用字符串解码base64_decode ,你会得到的原始数据不变。



Answer 6:

使用标准方法从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必须被包括在内,以便空字段(例如,日期时间字段)在输出保持空。



Answer 7:

$data (对我来说)是文本值作为ISO-8859-1的数组。 下面的诀窍准备$data与使用json_encode

function toUtf8(&$v, $k) {
    $v = utf8_encode($v);
}
array_walk_recursive($data, 'toUtf8');


Answer 8:

由于PHP 5.4.0的:

将您的字符串的阵列中为UTF-8使用函数utf8_encode($ STR)功能。

然后用JSON_UNESCAPED_UNICODE选项json_encode:

$ ARR = json_encode($阵列,JSON_UNESCAPED_UNICODE);



文章来源: How to get json_encode() to work with ISO-8859-1 (åäö)