ホームページ  >  記事  >  php教程  >  PHPにおける漢字ベース変換原理の解析

PHPにおける漢字ベース変換原理の解析

WBOY
WBOYオリジナル
2016-06-13 12:03:401125ブラウズ

1. 漢字を 10 進数に変換する原理の解析

GBK エンコードにおける漢字は 2 つの文字で構成されます。中国語の文字列を取得する方法は次のとおりです。

コードをコピーします コードは次のとおりです。


$string = "私に執着しないでください"; = strlen($string);
for($i=0 ;$iif(ord($string[$i])>127){
$ result[] = ord($string[$i]).' .ord($string[$i])
}
}
var_dump($result);

漢字は 2 文字で構成されているため、 ord() 関数で取得した ASCII 値が 127 より大きい場合は、現在の文字が漢字の前半であると判断できます。そして漢字の後半を取得する必要があります。もちろん、この判定方法は特定の開発環境と組み合わせる必要がありますが、ASCII 値が 127 を超える文字が 1 つある場合、この判定方法は明らかに間違っています。


PHP で中国語の文字を 10 進数に変換する原理は、for ループ メソッドを通じて 2 つの漢字を取得し、ord() 関数を使用して各文字を 10 進数に変換することです。上記はそれぞれ: Don't [178 187] Want [210 170] Fan [195 212] Love [193 181] Brother [184 231]


2.文字を 16 進数に変換

次に示すように、UltraEdit 開発ツールを使用して、漢字の 16 進数を直接表示します
たとえば、「Don't be」という 5 つの単語の 16 進数を表示します。兄に夢中"

上の図から、各漢字に対応する 16 進文字は次のとおりであることがわかります: B2BB、D2AA、Fan C3D4、Love C1B5、Brother B8E7

PHP は中国語の文字を 16 進数に変換する原理。つまり、まず ord() 関数を使用して各漢字の 10 進数を取得します。詳細については、「PHP 関数の章 ord() および chr() 関数の応用をマスターする」を参照してください。次に、dechex() 関数を使用して各漢字を 16 進数に変換します

インスタンスのソース コード



コードをコピー

コードは次のとおりです。 $string = "私に執着しないでください";

$length = strlen($string);

echo $string;
$result = array();
//10 進数
for($i=0;$iif(ord($string[$i])>127){
$result [] = ord($string[$i]).' '.ord($string[$i]);
}
}
var_dump($result); 🎜>$strings = array();
foreach($result as $v ){
$dec =explode(" ",$v);
$strings[] = dechex[0 ])." ".dechex($dec[1]);
}
var_dump($strings);


結果は以下のようになります


上記の方法を使用して漢字を 16 進数に変換し、出力結果を UltraEdit 開発ツールを使用して取得した 16 進数と比較できます。



3. 漢字の 2 進数および 8 進数への変換原理の分析


漢字の 2 進数および 8 進数への変換は、上記の 16 進数への変換原理と同じです。これは単なる変換の関数です。上記のコード例と組み合わせると、次の
による中国語文字からバイナリへの変換が次のように実装されます。コード
コードは次のとおりです:


$strings = array();
foreach($result as $v){

$dec =explode(" ",$v); $strings[] = decbin($ dec[0])." ".decbin($dec[1]); } var_dump($strings);

結果は次のとおりです。

中国語 文字を 8 進数に変換する方法は次のとおりです



コードをコピー

コードは次のとおりです:


$strings = array();
foreach( $result as $v){

$dec =explode(" ",$v); $strings[] = decoct($dec[0])." ".decot($dec[1]) ; }

結果は次のとおりです。 >

PHP における漢字の 16 進数変換の原理を理解した上で、PHP の組み込み関数 urldecode() を使用して 16 進数の文字を変換します。 文字列は組み合わせによって通常の漢字に変換されます。 の文字エンコーディングの原則に注意してください。 urldecode() 関数と urlencode() 関数については、漢字エンコーディング研究シリーズの次号で説明します。

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