latin1_swedish_ci エンコーディングを使用してデータベースからアクセント付き文字を取得し、json_encode() を使用してそれらを JSON にエンコードしようとすると、結果は予期せぬものになる可能性があります。 「Abord â Plouffe」などの意図した結果が「null」に変換され、エンコードされた JSON が無効になります。
この問題を解決するには、取得する前に取得した値を明示的に UTF-8 にエンコードする必要があります。 json_encode() を適用します。これにより、JSON 出力に正しい UTF-8 文字が含まれることが保証され、それに応じて検証されます。このソリューションを実装する方法は次のとおりです。
<code class="php">// Initialize an empty array for the encoded result set $rows = array(); // Iterate over the PHPMyAdmin result set while ($row = mysql_fetch_assoc($result)) { // Apply UTF-8 encoding to each row value $rows[] = array_map('utf8_encode', $row); } // Output the encoded $rows echo json_encode($rows);</code>
この変更されたコードでは、array_map 関数を利用して、結果セット内のすべての行の各要素に utf8_encode を適用します。これにより、json_encode が実行される前に、すべての文字が UTF-8 に適切にエンコードされるようになります。その結果、結果として得られる JSON 出力は、意図した文字を正確に反映し、アクセント付き文字は必要に応じて維持されます。
以上がjson_encode() が Latin1 エンコーディングを使用した MySQL データベースのアクセント付き文字のエンコードに失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。