ホームページ >バックエンド開発 >PHPの問題 >php json_encode() の中国語トランスコーディングを解決する方法

php json_encode() の中国語トランスコーディングを解決する方法

PHPz
PHPzオリジナル
2023-03-21 16:32:212206ブラウズ

PHP は、Web 開発で非常に一般的に使用されるプログラミング言語であり、漢字を含む JSON 形式へのデータの書式設定をサポートします。ただし、PHP で json_encode() 関数を使用すると、中国語が文字化けする問題が発生することがあります。この記事では、PHP の json_encode() 関数を使用するときに中国語の文字エンコードの問題を回避する方法について説明します。

JSON と PHP の json_encode() 関数とは何ですか?

JSON (JavaScript Object Notation) は、読み書きが簡単な軽量のデータ交換形式です。 Web アプリケーション間のデータ交換で広く使用されており、PHP の json_encode() 関数を使用すると、Web 上で簡単に送信できるように PHP 変数を JSON 形式にフォーマットできます。

たとえば、「person」という名前の PHP 変数がある場合、次のコードを使用して JSON 形式にフォーマットできます:

$person = array(
  'name' => '张三',
  'age' => 20,
  'gender' => '男'
);

$json_person = json_encode($person);

echo $json_person;

出力結果は次のとおりです:

{"name":"张三","age":20,"gender":"男"}

これは基本的な JSON オブジェクトです。

json_encode中国語の文字エンコードの問題

PHP で json_encode() 関数を使用して中国語の文字を含む文字列を JSON 形式にフォーマットすると、正しくない中国語の文字エンコードが発生することがあります。

たとえば、中国語の文字を含む次の PHP 配列を JSON 形式にフォーマットします:

$data = array(
  'name' => '张三',
  'age' => 20,
  'gender' => '男'
);

$json_data = json_encode($data);

echo $json_data;

出力結果は次のようになります:

{"name":"\u5f20\u4e09","age":20,"gender":"\u7537"}

ご覧のとおり、出力 JSON ではJSON 形式では文字列を Unicode エンコードで表現する必要があるため、文字列の中国語文字は Unicode エンコードに変換されます。

ただし、このエンコード方法は場合によっては読み取りや使用が不便です。したがって、それを解決する方法が必要です。

解決策

PHP では、 json_encode() 関数の 2 番目のパラメーターを使用して JSON 出力オプションを設定できます。このパラメータでは、JSON_UNESCAPED_UNICODE オプションを設定して、中国語の文字を JSON に正しく出力できるようにします。

$data = array(
  'name' => '张三',
  'age' => 20,
  'gender' => '男'
);

$json_data = json_encode($data, JSON_UNESCAPED_UNICODE);

echo $json_data;

出力結果は次のとおりです:

{"name":"张三","age":20,"gender":"男"}

これにより、中国語の文字エンコードの問題を回避し、Web アプリケーションで JSON データを簡単に使用できます。

JSON エンコードに関するその他の問題

中国語の文字エンコードの問題に加えて、json_encode() 関数には他の問題もあります。たとえば、PHP 変数に次のものが含まれている場合などです。特殊文字 たとえば、「\」はエスケープ エラーなどを引き起こす可能性があります。これらの問題を回避するには、他の JSON トランスコーディング関連の関数またはメソッドを使用して JSON データを処理する必要もあります。

概要

Web アプリケーションを作成する場合、データ交換に JSON 形式を使用するのが一般的な方法であり、PHP で json_encode() 関数を使用すると、PHP 変数を便利にフォーマットできます。 JSON形式。上記のプロセス中に、中国語の文字エンコードの問題が発生する可能性がありますが、json_encode() 関数を呼び出すときに JSON_UNESCAPED_UNICODE オプションを追加することで回避できます。ただし、中国語の文字エンコーディングの問題を解決するだけでは十分ではなく、信頼性と安定性を確保するには、他の方法を使用して他の考えられる問題に対処する必要もあります。

以上がphp json_encode() の中国語トランスコーディングを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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