php json_encodeは常にunicode文字「u...」を返します.問題解決
最近変なことがあって、先日書いたちゃんとしたコードが、今日また実行すると文字化けしてしまいました.調べてみると、一般的な意味の文字化けではなく、返されるunicode符号化の文字です.
漢字のようです:登録に失敗して、json_を通りますencodeはその後、「u 767 bu 5 f 55u 5931u 8 d 25」に戻ります.
本当に怒って雑家を探して、これが普遍的な問題であることを発見して、最終的な解決方法は以下の通りです:
通常の呼び出しjson_Encode($arr)は、echo間で、このjsonデータを以下の関数で処理します.
public static function JSON($str){ $json = json_encode($str); return preg_replace("#\\\u([0-9a-f]+)#ie","iconv('UCS-2','UTF-8', pack('H4', '\\1'))",$json); }
これでもう文字化けしません.高バージョンphpの場合、パラメータを直接追加できますが、低バージョンでは無効なので、そうするしかありません.完全なコードは次のとおりです.
呼び出し例:
参照先:http://stackoverflow.com/questions/6771938/any-way-to-return-php-json-encode-with-encode-utf-8-and-not-unicode
漢字のようです:登録に失敗して、json_を通りますencodeはその後、「u 767 bu 5 f 55u 5931u 8 d 25」に戻ります.
本当に怒って雑家を探して、これが普遍的な問題であることを発見して、最終的な解決方法は以下の通りです:
通常の呼び出しjson_Encode($arr)は、echo間で、このjsonデータを以下の関数で処理します.
public static function JSON($str){ $json = json_encode($str); return preg_replace("#\\\u([0-9a-f]+)#ie","iconv('UCS-2','UTF-8', pack('H4', '\\1'))",$json); }
これでもう文字化けしません.高バージョンphpの場合、パラメータを直接追加できますが、低バージョンでは無効なので、そうするしかありません.完全なコードは次のとおりです.
<?php
class util{
public static function JSON($str){
$json = json_encode($str);
return preg_replace("#\\\u([0-9a-f]+)#ie","iconv('UCS-2','UTF-8', pack('H4', '\\1'))",$json);
}
}
?>
呼び出し例:
// echo " ";
$arr = array ();
$arr ['code'] = - 1;
$arr ['message'] = " ";
echo $arr ['message'];
$arr ['data'] = "";
return util::JSON ( $arr );
参照先:http://stackoverflow.com/questions/6771938/any-way-to-return-php-json-encode-with-encode-utf-8-and-not-unicode