Unicode 文字を使用した JSON の PHP デコードとエンコード
Unicode 文字のデコードに関する問題
試行時Unicode 文字を含む JSON をデコードする場合、文字が特定の範囲内にある場合に問題が発生する可能性があります。具体的には、「」や「」などの文字をJSON文字列に含めることが禁止されています。さらに、制御文字は許可されません。
UTF-8 エンコードとデコード
これに対処するには、utf8_encode を使用して、文字列を json_decode でデコードできるようにします。ただし、文字が崩れる可能性があります。たとえば、「Odómetro」は「Odómetro」に変換されます。
再エンコードと文字エスケープ
配列を再エンコードすると、文字は次のようにエスケープされます。 ASCII。これは JSON 仕様によれば正しいものです: "Tag"=>"Odu00f3metro"。文字をエスケープ解除するには、「json_encode」の JSON_UNESCAPED_UNICODE オプションを利用できます。ただし、これは PHP 5.4 以降でのみ使用できます。
正規表現を使用した代替ソリューション
PHP 5.3 に限定されている場合は、正規表現ベースの解決策:
$json = json_encode($array, JSON_UNESCAPED_SLASHES); // Replace escaped unicode characters with their UTF-8 equivalents $json = preg_replace('/\\u([0-9a-fA-F]{4})/', '&#x;', $json);
JSON_UNESCAPED_SLASHES フラグを使用すると、JSON 文字列内でスラッシュ () がエスケープされなくなります。次に、正規表現パターンはエスケープされた Unicode 文字 (u####) と一致し、それらを UTF-8 の同等の文字に置き換えます。
以上がPHP で Unicode 文字を使用して JSON をデコードおよびエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。