json_encode() の UTF-8 文字エンコーディングの問題
PHP では、特に作業時に UTF-8 文字エンコーディングを処理することが困難になることがあります。データベースと JSON エンコーディングを使用します。アクセント付き文字を含むデータベース行を含む配列を JSON エンコードしようとすると、一般的な問題が 1 つ発生します。ドキュメントでは json_encode() が UTF-8 をサポートしていると主張していますが、エンコード プロセス中に一部の文字が失われたり、null 値として表示されたりする可能性があります。
この問題を解決するには、別のアプローチが必要です。行の配列を直接エンコードする代わりに、空の配列を作成し、エンコードされた値を行ごとに設定します。以下に例を示します:
<code class="php">// Create an empty array for the encoded resultset $rows = array(); // Loop over the db resultset and put encoded values into $rows while($row = mysql_fetch_assoc($result)) { $rows[] = array_map('utf8_encode', $row); } // Output $rows echo json_encode($rows);</code>
この更新されたコードでは:
このアプローチにより、最終的な JSON エンコードの前にすべての UTF-8 文字が適切にエンコードされるようになり、元のコードで一部の文字が失われたり null として表示されたりする問題が解決されます。 .
以上がPHP でデータベース行をエンコードするときに json_encode() で UTF-8 文字が失われることがあるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。