JSON 処理の領域では、特に次のような特殊文字を扱う場合、文字のエンコーディングとデコーディングが課題となることがよくあります。 Unicodeのもの。 Unicode 文字を含む JSON 文字列のデコードは失敗する可能性があり、開発者は困惑することがあります。
PHP を使用して Unicode 文字を含む JSON 文字列をデコードしようとすると、 json_decode 関数を使用すると、失敗して文字が壊れたままになる場合があります。 JSON の仕様ではあらゆる Unicode 文字が許可されているにもかかわらず、この動作はフラストレーションの原因です。
この問題を解決するには、 PHP の utf8_encode 関数を利用してデコードできます。ただし、変更された配列を再エンコードすると、Unicode 文字は ASCII としてエスケープされます。これは JSON 仕様に準拠していますが、望ましくない場合があります。
PHP バージョン 5.4 では、json_encode に JSON_UNESCAPED_UNICODE オプションが導入されました。このオプションは、Unicode 文字がエスケープされるのを防ぎます。ただし、5.4 より前のバージョンの場合、正規表現を使用して Unicode 文字を手動でエスケープ解除することが解決策となります。
このエンコードとデコードの難問を解決するには、json_encode 関数で JSON_UNESCAPED_UNICODE オプションと JSON_UNESCAPED_SLASHES オプションの両方を使用します。この組み合わせにより、Unicode 文字がエスケープされず、スラッシュもエスケープ シーケンスとしてではなく文字として扱われることが保証されます。
以下のコード スニペットを使用すると、問題を適切に解決できます。
<code class="php">json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);</code>
このソリューションを採用すると、出力が破損することを心配することなく、Unicode 文字を含む JSON 文字列を自信を持ってデコードおよびエンコードできます。
以上がデータを失わずに、PHP で Unicode 文字を含む JSON 文字列をデコードおよびエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。