ホームページ  >  記事  >  バックエンド開発  >  PHPオブジェクトをJSON中国語の文字化けコードに変換する

PHPオブジェクトをJSON中国語の文字化けコードに変換する

PHPz
PHPzオリジナル
2023-05-22 21:36:06637ブラウズ

Web 開発を行う場合、JSON は、オブジェクトを JSON データに変換し、AJAX を通じて非同期的に送信するためによく使用されます。ただし、JSON 形式の出力に PHP バックグラウンドを使用すると、オブジェクトが JSON 形式に変換された後に中国語の文字化けが発生する可能性があります。この記事では、この問題を解決する方法について説明します。

問題の説明

PHP コードでは、json_encode() 関数を使用してオブジェクトを JSON 形式の文字列に変換し、echo# を渡します。 ## 出力。ただし、JSON に中国語が含まれる場合、次の図に示すように文字化けが発生します。

PHPオブジェクトをJSON中国語の文字化けコードに変換する

きれいな中国語の文字が文字化けに変換され、ユーザーやユーザーにとって有害で​​す。開発者全員が無愛想です。次に3つの解決策を紹介します。

解決策

方法 1: 中国語

を手動でエンコードし、

json_encode() 関数 mb_convert_encoding の前に json_encode()-> を追加します。 ()、中国語を手動で utf-8 にエンコードします。

サンプル コードは次のとおりです。

<?php
$arr = [
    'name' => '张三',
    'age' => 18,
    'gender' => '男'
];
echo mb_convert_encoding(json_encode($arr, JSON_UNESCAPED_UNICODE), 'UTF-8');
?>

このコードを追加すると、出力文字列内の中国語が文字化けせずに utf-8 エンコーディングに正しく変換されます。

方法 2:

json_encode() のパラメーターを設定する

json_encode() 関数に JSON_UNESCAPED_UNICODE パラメーターを追加します。 json_encode() を伝えるため この関数は中国語を Unicode にエンコードせず、中国語をそのまま保持します。

サンプル コードは次のとおりです。

<?php
$arr = [
    'name' => '张三',
    'age' => 18,
    'gender' => '男'
];
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>

このパラメーターを追加すると、出力される JSON 内の中国語が文字化けせずに正しく出力されるようになります。

方法 3: PHP コア設定を変更する

PHP コア設定には、テキストを出力するときに使用されるデフォルトの文字エンコーディングを示すパラメータ

default_charset があります。このパラメータを UTF-8 に設定すると、JSON を出力するときに中国語が正しくエンコードされます。

サンプル コードは次のとおりです。

<?php
ini_set('default_charset', 'utf-8');
$arr = [
    'name' => '张三',
    'age' => 18,
    'gender' => '男'
];
echo json_encode($arr);
?>

JSON 内の中国語が文字化けしないように、JSON を出力する必要があるスクリプトにこのコードを挿入します。

結論

Web 開発を行う場合、データ送信に JSON 形式を使用するのが非常に一般的です。 PHP で、

json_encode() 関数を使用してオブジェクトを JSON 形式の文字列にシリアル化すると、中国語の文字化けが表示されることがあります。この記事では、中国語を手動でエンコードする、json_encode() のパラメータを設定する、および PHP コア設定の default_charset パラメータを変更するという 3 つの解決策を紹介します。これらの方法は、JSON 中国語の文字化けの問題を効果的に解決でき、実際の状況に応じて具体的な用途を選択できます。

以上がPHPオブジェクトをJSON中国語の文字化けコードに変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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