ホームページ >バックエンド開発 >PHPチュートリアル >PHP JSON_DECODE/JSON_ENCODE 中国語のコンテンツが NULL または文字化けする_PHP チュートリアル
json データを使用するときに中国語コンテンツを処理するために PHP の組み込み関数 JSON_DECODE/JSON_ENCODE を使用すると、多くの友人が NULL または文字化けコードの問題に遭遇する可能性があります。そのような問題が発生する理由を紹介します。
例
コードは次のとおりです | コードをコピー |
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); ?> 結果を出力する オブジェクト(stdClass)#1 (5) { 配列(5) { |
問題なく正解です。それでは中国語をテストしてみましょう
コードは次のとおりです | コードをコピー |
$json = '{"a":"中国人"}'; var_dump(json_decode($json)); ?> 結果 {"テキスト":null,"ステータス":1} |
後でphpのマニュアルを見て、json_encodeとjson_decodeはutf-8エンコードされた文字のみをサポートしていることがわかりました。jsonを使用したい場合はGBK文字を変換する必要があるため、簡単に処理できます
。エンコーディングを変換する
コードは次のとおりです | コードをコピー |
/* if(is_array($s)) { } echo json_encode(icon_to_utf8("アモイ")); |
これは依然として問題を引き起こすことがあります。その後、urlencode() を使用して json_encode の前にすべての配列の内容を処理し、次に json_encode() を使用してそれを JSON 文字列に変換し、最後に urldecode() を使用してエンコードする方法を見つけました。渡した中国語を転送してください。
関数を書く
コードは次のとおりです | コードをコピー |
/*************************************************** * ********** if ($apply_to_keys_only && is_string($key)) { /*************************************************** * ********** |