「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > json_encode() が Latin1 エンコーディングを使用した MySQL データベースのアクセント付き文字のエンコードに失敗するのはなぜですか?

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

2024 年 11 月 7 日に公開
ブラウズ:617

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 文字が含まれることが保証され、それに応じて検証されます。このソリューションを実装する方法は次のとおりです:

// 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);

この変更されたコードでは、array_map 関数を利用して、結果セット内のすべての行の各要素に utf8_encode を適用します。これにより、json_encode が実行される前に、すべての文字が UTF-8 に適切にエンコードされるようになります。その結果、結果として得られる JSON 出力は、意図した文字を正確に反映し、必要に応じてアクセント付き文字を保持します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3