ホームページ  >  記事  >  データベース  >  json_encode() が Latin1 エンコーディングを使用した MySQL データベースのアクセント付き文字のエンコードに失敗するのはなぜですか?

json_encode() が Latin1 エンコーディングを使用した MySQL データベースのアクセント付き文字のエンコードに失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 11:55:02335ブラウズ

Why Does json_encode() Fail To Encode Accented Characters From a MySQL Database with Latin1 Encoding?

MySQL での UTF-8 文字での JSON エンコーディングの問題

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。