PHPプログラミングでは、漢字を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のデフォルトエンコーディングを変更することにより、文字化けコードを回避できます。 Header()関数を使用して、PHPファイルのヘッダーで文字エンコードを設定します。
<span class="fun">Header( 'Content-Type:text/html; charset = utf-8');</span>
この設定の後、すべての出力はUTF-8でエンコードされ、漢字がURLパラメーターに渡されたとしても、Carled Codeはありません。
さらに、PHP.iniファイルの次の3つのパラメーターが正しく構成されていることを確認する必要もあります。
default_charset = 'UTF-8'
mbstring.internal_encoding = 'UTF-8'
mbstring.http_input = 'UTF-8'
これらのパラメーターは、それぞれデフォルトのエンコード、内部エンコード、およびHTTP入力エンコードを設定するために使用されます。正しい構成は、文字化けされた中国語の問題を効果的に回避できます。
PHPでプログラミングする場合、URLパラメーターで漢字を処理することが重要です。 URLエンコードとデコードを介して、PHPデフォルトエンコードの変更、PHP.iniファイルの正確な設定では、Carled Codeの問題を効果的に回避できます。これらの方法を習得することにより、PHPアプリケーションが中国語を含むURLパラメーターを正しく処理できるようにします。