インターネットの発展に伴い、ますます多くの Web サイトやアプリケーションが言語間の問題を伴うようになりました。中国語は特殊な言語であるため、エンコードと変換が比較的困難です。 PHP言語には豊富な中国語変換関数が用意されていますので、今回はそれらの関数について詳しく紹介します。
1. 中国語のエンコード
urlencode() 関数は、中国語の文字をエンコードし、%XX 形式に変換できます。文字セット内の文字の 16 進表現です。たとえば、「中文」という単語は、urlencode() 関数を使用すると「中文」に変換されます。
例:
$str = "中文"; echo urlencode($str); // 输出 %E4%B8%AD%E6%96%87
rawurlencode() 関数は基本的に urlencode() 関数と同じ機能を持ちますが、違いは rawurlencode です。 ( ) 関数はスペースをエンコードせず、「」記号に変換します。
例:
$str = "中文 test"; echo rawurlencode($str); // 输出 %E4%B8%AD%E6%96%87+test
urldecode() 関数は、urlencode() 関数を使用してエンコードされた文字列をデコードできます。 %XX の形式の文字を対応する中国語の文字に変換します。
例:
$str = "%E4%B8%AD%E6%96%87"; echo urldecode($str); // 输出 中文
rawurldecode() 関数は urldecode() 関数と同じ機能を持ちますが、違いは rawurldecode( ) 関数 「」記号はスペースに変換されます。
例:
$str = "%E4%B8%AD%E6%96%87+test"; echo rawurldecode($str); // 输出 中文 test
2. 中国語の変換
iconv() 関数は、中国語間の変換を完了できます。 utf-8、gbk、big5 などの一般的に使用されるエンコード形式を含む、さまざまなエンコード変換。構文形式は次のとおりです。
iconv($in_charset, $out_charset, $string);
ここで、$in_charset は入力文字列のエンコード形式を表し、$out_charset は出力文字列のエンコード形式を表し、$string は変換される文字列を表します。
たとえば、utf-8 でエンコードされた文字列を gbk エンコードされた文字列に変換します:
$str = "中文"; $str = iconv("utf-8", "gbk", $str); echo $str; // 输出乱码,应该在gbk编码的环境下查看
注: iconv() 関数の変換後に文字化けが発生する場合があります。 2 つのエンコーディングの文字間に対応関係が存在しない可能性があるため、正しく変換できません。この問題を解決するには、Unicode 変換方法を使用します。
mb_convert_encoding() 関数は、異なるエンコーディング間の変換を完了することもできます。iconv() 関数との違いは、その使用がより柔軟であることです。さらに多くの変換オプションを指定できます。構文形式は次のとおりです。
mb_convert_encoding($string, $to_encoding, $from_encoding);
ここで、$string は変換される文字列を表し、$to_encoding は変換されたエンコード形式を表し、$from_encoding は元の文字列のエンコード形式を表します。
たとえば、utf-8 でエンコードされた文字列を gbk エンコードされた文字列に変換します。
$str = "中文"; $str = mb_convert_encoding($str, "gbk", "utf-8"); echo $str; // 输出乱码,应该在gbk编码的环境下查看
utf8_encode() 関数は ISO-8859-1 エンコード文字列を utf-8 エンコード文字列に変換でき、utf8_decode() 関数は utf-8 エンコード文字列を ISO-8859-1 エンコード文字列に変換できます。
たとえば、ISO-8859-1 でエンコードされた文字列を utf-8 でエンコードされた文字列に変換します。
$str = "中文"; $str = utf8_encode($str); echo $str; // 输出ä¸æ–‡
注: utf8_encode() 関数の変換後に文字化けが発生する可能性があるため、慎重に使用する必要があります。
chr() 関数は、指定された ASCII コード値を対応する文字に変換でき、ord() 関数はその後、指定された文字を対応する ASCII コード値に変換できます。特に、UTF-8 エンコーディングでは、各文字は 1 ~ 4 バイトで構成されます。特定の文字の UTF-8 エンコーディングの場合、ord() 関数を通じてその 10 進数値を取得し、chr() 関数を使用してそれを文字に変換できます。
たとえば、文字「中」を UTF-8 エンコードに変換します。
$ord1 = ord("中"); // 取得字符"中"的UTF-8编码的第一个字节的值 $ord2 = ord(substr("中", 1)); // 取得字符"中"的UTF-8编码的第二个字节的值 $str = chr(0xe4) . chr(0xb8) . chr(0xad); // 使用chr()函数转换为UTF-8编码的字符串 echo $str; // 输出 "中"
注: chr() 関数と ord() 関数を使用する場合は、エンコードを慎重に検討する必要があります。異なる文字セットの違い。
3. 中国語の長さの判定
strlen() 関数は、中国語と中国語を含む文字列の長さを計算するために使用されます。英語のキャラクター。ただし、中国語の文字はエンコードによって占有するバイト数が異なるため、中国語の文字列の長さを計算するときに中国語の文字の数を正確にカウントすることはできません。たとえば、strlen() 関数を使用して「中国語」の長さを計算すると、結果は 6 になります。
例:
$str = "中文"; echo strlen($str); // 输出 6
mb_strlen() 関数は、中国語の文字列の長さを正確に計算できます。計算される。
例:
$str = "中文"; echo mb_strlen($str); // 输出 2
注: mb_strlen() 関数を使用する場合は、正しい中国語文字セットを指定する必要があります。文字セットがわからない場合は、mb_detect_encoding() 関数を使用してそれを検出できます。
以上がPHPの中国語変換機能を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。