11

json_encode()åäö を使用しているときは機能しません。なんで?どうすればそれを機能させることができますか?

php:_

echo json_encode($arr);

javascript:_

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

Ialert()が応答で、応答に å、ä、または ö が含まれている場合、応答は =NULL

私を助けてください...

4

8 に答える 8

12

json_encode()ドキュメントには次のように書かれています:

この関数は、UTF-8 でエンコードされたデータでのみ機能します。

最初にiconvまたはmbstringで utf-8 に変換する必要があります。

于 2009-09-08T14:34:53.813 に答える
7

Greg が述べたように、私は åäö を にエンコードする必要がありましたUTF-8。しかし、iconv や mbstring は使用しませんでした。問題に値を入れる前にutf8_encode()すべての値を指定するとarray、問題は解決しました。

于 2009-09-14T15:22:55.800 に答える
6

この関数は、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));
于 2015-05-09T13:52:11.070 に答える
2

JSON は文字列を Unicode として定義します!

JSON 定義

ISOをUTF-8にエンコードする必要があります

于 2009-10-26T12:15:18.713 に答える
2

古い質問ですが、誰かが json_encode を使用してデータをログに記録する必要があるが、後で検査するためにデータをそのままにしておく必要がある場合に備えて、ここに置くと思いました。

を使用してデータをそのままエンコードするbase64_encodeと、 で動作しjson_encodeます。後で を実行した後json_decode、 で文字列をデコードするとbase64_decode、変更されていない元のデータが得られます。

于 2017-01-12T16:49:00.630 に答える
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_nullnull フィールド (DateTime フィールドなど) が出力で null のままになるように、 を含める必要があります。

于 2009-10-26T12:12:03.273 に答える
0

$data私の場合)は、テキスト値がISO-8859-1の配列です。$data以下のトリックは、 で使用する準備をしますjson_encode

function toUtf8(&$v, $k) {
    $v = utf8_encode($v);
}
array_walk_recursive($data, 'toUtf8');
于 2014-11-06T19:55:50.477 に答える