ホームページ > バックエンド開発 > PHPチュートリアル > PHP の特定の大陸コードで「json_encode()」が失敗するのはなぜですか?

PHP の特定の大陸コードで「json_encode()」が失敗するのはなぜですか?

Barbara Streisand
リリース: 2024-11-03 23:22:30
オリジナル
941 人が閲覧しました

Why Does `json_encode()` Fail with Specific Continent Codes in PHP?

PHP 配列の JSON エンコーディングの問題

質問:

PHP の json_encode( ) MySQL テーブルデータを JSON に変換する関数ですが、遭遇しています奇妙な行動。この関数は、特定のクエリ、特に特殊文字や特定の大陸コードを含むクエリのデータをエンコードしません。

コード スニペット:

<code class="php">$result = mysqli_query($con, "SELECT * FROM countries WHERE continent_code='EU'") or die(mysqli_error($con));

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $orders[] = array(
        'CountryCode' => $row['code'],
        'CountryName' => $row['name']
    );
}

echo json_encode($orders);</code>
ログイン後にコピー

観察:

  • コードは大陸コードに対してデータを正しくエンコードします'AS'.
  • 大陸コード 'EU'、'NA'、'AF' などは JSON 出力を生成しません。

問題:

json_encode() 関数では、すべての受信データが UTF-8 でエンコードされている必要があります。特殊文字および特定の大陸コードは、データベース内またはデータ操作中に適切にエンコードされない可能性があります。

解決策:

Web アプリケーション全体で UTF-8 エンコードを確認してください。これには以下が含まれます:

  • UTF-8 を使用するようにデータベース接続を設定する (例: mysqli_set_charset($con, 'UTF-8'))
  • JSON 応答のヘッダーの宣言 ( header('Content-Type: application/json; charset=utf-8');)
  • PHP ファイルとデータベースが UTF-8 エンコーディングを使用していることを確認します (例: ファイル エンコーディングまたはデータベース設定経由)

RFC4627 には、「JSON テキストは Unicode でエンコードされるものとします。デフォルトのエンコードは UTF-8 です。」と記載されています。 UTF-8 エンコーディングを保証することで、json_encode() は内容に関係なくすべてのデータを正しく処理できるようになります。

以上がPHP の特定の大陸コードで「json_encode()」が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート