「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Windows-1252 エンコーディングを使用して PHP で一重引用符をエンコードすると `json_encode()` が失敗するのはなぜですか?

Windows-1252 エンコーディングを使用して PHP で一重引用符をエンコードすると `json_encode()` が失敗するのはなぜですか?

2024 年 11 月 12 日に公開
ブラウズ:210

Why Does `json_encode()` Fail When Encoding Single Quotes in PHP with Windows-1252 Encoding?

一重引用符による PHP の json_encode エラー

PHP stdClass オブジェクト ($post) が関係するシナリオで、json_encode() 関数が予期せず実行されるpost_title プロパティのエンコードに失敗し、JSON 出力に null 値が返されます。データベースの見かけの UTF-8 エンコーディングにもかかわらず、データ取得プロセスが正しく構成されていない可能性があります。

原因: エンコーディングが正しくありません

JSON エンコーディングこの問題は、post_title の一重引用符文字のエンコードが正しくないことが原因で発生します。具体的には、文字は Windows-1252 でエンコードされ、16 進値 92 になります。これは有効な UTF-8 文字ではありません。

解決策: データベース接続エンコーディングを設定します

この問題を解決するには、データベース接続のエンコーディングを UTF-8 に設定する必要があります。使用されるメソッドは、使用される API によって異なります:

  • MySQL: mysql_set_charset("utf8")
  • MySQLi: mysqli_set_charset("utf8")
  • PDO (PHP > = 5.3.6): 接続文字列の charset パラメータ
  • PDO (以前のバージョン): SET NAMES utf8

追加の考慮事項

接続エンコードを設定すると、データベースから取得したデータが UTF-8 で適切にエンコードされるようにすることが重要です。ただし、データが Windows-1252 などの間違ったエンコーディングで保存されている場合は、utf8_encode() またはその他の手段による手動変換が必要になる場合があります。

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

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

Copyright© 2022 湘ICP备2022001581号-3