現在の位置: ホーム> 最新記事一覧> PHP URLパラメーターで文字化けされた中国の問題を解決する方法

PHP URLパラメーターで文字化けされた中国の問題を解決する方法

gitbox 2025-06-28

1。問題の定義

PHPプログラミングでは、漢字をURLパラメーターに渡す必要があることがよくあります。ただし、漢字は英語の文字よりも多くのバイトを占有するため、通過中に文字化けの問題が発生します。この問題を解決するには、漢字を具体的にエンコードする必要があります。

2。問題解決策

URLエンコードとデコード

URLエンコードは、URLの特殊文字をURL仕様に準拠する形式に変換できます。 PHPでは、 urlencode()関数を使用して文字列をエンコードして、すべての非α以外の文字が%xxフォームに置き換えられるようにします。ここで、xxは文字のASCIIコードの16進表現です。

たとえば、URLに文字列「中国語」をエンコードするには、次のコードを使用できます。

 $encoded_str = urlencode('中国語');
 echo $encoded_str; // %E4%B8%AD%E6%96%87

上記のコードは、「中国語」を「%E4%B8%AD%E6%96%87」に変換します。エンコードされた文字列をデコードする必要がある場合は、 urldecode()関数を使用できます。例えば:

 $decoded_str = urldecode('%E4%B8%AD%E6%96%87');
 echo $decoded_str; // 中国語

さらに、 http_build_query()関数は、配列をURLパラメーターに変換できます。複数のキー価値ペアがある場合、それらを完全なURLに結合することができます。

 $data = array('name' => '中国語', 'age' => 18);
$query_string = http_build_query($data);
 echo $query_string; // name=%E4%B8%AD%E6%96%87&age=18

PHPのデフォルトエンコードを変更します

PHPアプリケーションが漢字を頻繁に使用する場合、PHPのデフォルトエンコーディングを変更することにより、文字化けコードを回避できます。 Header()関数を使用して、PHPファイルのヘッダーで文字エンコードを設定します。

 <span class="fun">Header( &#39;Content-Type:text/html; charset = utf-8&#39;);</span>

この設定の後、すべての出力はUTF-8でエンコードされ、漢字がURLパラメーターに渡されたとしても、Carled Codeはありません。

php.iniファイルのエンコード設定が正しいことを確認してください

さらに、PHP.iniファイルの次の3つのパラメーターが正しく構成されていることを確認する必要もあります。

 default_charset = 'UTF-8'
 mbstring.internal_encoding = 'UTF-8'
 mbstring.http_input = 'UTF-8'

これらのパラメーターは、それぞれデフォルトのエンコード、内部エンコード、およびHTTP入力エンコードを設定するために使用されます。正しい構成は、文字化けされた中国語の問題を効果的に回避できます。

3。概要

PHPでプログラミングする場合、URLパラメーターで漢字を処理することが重要です。 URLエンコードとデコードを介して、PHPデフォルトエンコードの変更、PHP.iniファイルの正確な設定では、Carled Codeの問題を効果的に回避できます。これらの方法を習得することにより、PHPアプリケーションが中国語を含むURLパラメーターを正しく処理できるようにします。