ホームページ > バックエンド開発 > PHPの問題 > PHP配列をJSONに変換して中国語をフィルタリングする

PHP配列をJSONに変換して中国語をフィルタリングする

WBOY
リリース: 2023-05-19 09:00:37
オリジナル
599 人が閲覧しました

Web 開発では、ページにデータを動的に読み込むために、PHP の配列を JSON 形式に変換することが必要になることがよくあります。ただし、配列を JSON に変換するプロセス中に、中国語のエンコードの問題が発生し、データが正しく表示されなくなる場合があります。この記事では、PHP 配列を JSON に変換するプロセスで中国語のエンコードの問題をフィルタリングして、データがページ上に正常に表示されるようにする方法について説明します。

1. PHP 配列を JSON に変換する

PHP では、 json_encode() 関数を使用して配列を JSON 形式に変換します。たとえば、次の配列がある場合:

$arr = array(
  "name" => "张三",
  "age" => 25,
  "gender" => "男"
);
ログイン後にコピー

次のコードを使用して、それを JSON 形式に変換できます:

$json = json_encode($arr);
echo $json; // 输出:{"name":"张三","age":25,"gender":"男"}
ログイン後にコピー

2. 中国語のエンコードの問題

ただし、配列に中国語が含まれています 文字を使用する場合、変換された JSON 形式でエンコードの問題が発生する可能性があります。たとえば、次の配列を JSON 形式に変換します:

$arr = array(
  "name" => "李四",
  "age" => 30,
  "gender" => "男",
  "desc" => "这是一个描述,包含中文字符"
);
ログイン後にコピー

json_encode() 関数を使用して、JSON 形式に変換します:

$json = json_encode($arr);
echo $json; // 输出:{"name":"u674eu56db","age":30,"gender":"u7537","desc":"u8fd9u662fu4e00u4e2au63cfu8ff0uff0cu5305u542bu4e2du6587u5b57u7b26"}
ログイン後にコピー

ご覧のとおり、中国語の文字は Unicode 文字としてエンコードされます。ページ上に正常に表示されている状態では使用できません。これは、デフォルトでは、異なるプラットフォーム間でデータを転送するために json_encode() 関数が非 ASCII 文字を Unicode 文字にエンコードするためです。

3. 中国語のフィルター

中国語のエンコードの問題を解決するには、JSON_UNESCAPED_UNICODE パラメーターを使用して中国語の文字をフィルターできます。このパラメーターにより、json_encode() 関数は、JSON の変換時に中国語の文字を Unicode 文字にエンコードせず、中国語の文字を直接出力できるようになります。

上記のコードを次のように変更します。

$json = json_encode($arr, JSON_UNESCAPED_UNICODE);
echo $json; // 输出:{"name":"李四","age":30,"gender":"男","desc":"这是一个描述,包含中文字符"}
ログイン後にコピー

中国語の文字が他の文字と同様に出力され、ページ上に正常に表示されることがわかります。

4. 概要

PHP 配列を JSON 形式に変換する場合、配列に中国語の文字が含まれている場合は、中国語のエンコードの問題に注意する必要があります。 JSON_UNESCAPED_UNICODE パラメーターを使用して中国語の文字をフィルターし、データがページ上に正常に表示されるようにすることができます。

以上がPHP配列をJSONに変換して中国語をフィルタリングするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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