ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHPチュートリアルにおける漢字ベース変換の原理の分析

PHP_PHPチュートリアルにおける漢字ベース変換の原理の分析

WBOY
WBOYオリジナル
2016-07-21 15:22:281108ブラウズ

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

GBKエンコードにおける漢字は2つの文字で構成されています

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

$string = "執着しないでください兄弟";
$length = strlen($string);
for($i=0;$i<$length;$i++){
if(ord) ($string[$i])>127){
$ result[] = ord($string[$i]).'.ord($string[++$i]);
var_dump ($result);



1 つの漢字は 2 つの文字で構成されているため、ord() 関数で取得した文字の ASCII 値が 127 より大きい場合、現在の文字は漢字の前半と後半の漢字を取得する必要があります。もちろん、この判断方法は特定の開発環境と組み合わせる必要がありますが、ASCII 値が 127 を超える文字が 1 つある場合、この判断方法は明らかに間違っています。 php-ord-dec-number
PHP で漢字を 10 進数に変換する原理は、for ループ メソッドを通じて漢字の 2 文字を取得し、ord() 関数を使用して各文字を 10 進数に変換することです。上記は次のとおりです: いいえ [178 187] 欲しい [210 170] ファン [195 212] 愛 [193 181] 兄弟 [184 231]


第二に、漢字を 16 進数に変換する原理の分析
UltraEdit 開発を使用する下の図のように、漢字の16進数を直接確認できます

例えば、「兄に執着しないでください」という5文字の16進数を確認してください


上の図から、各漢字に対応する 16 進数 文字は次のとおりです: Not B2BB、D2AA、Fan C3D4、Love C1B5、Brother B8E7 ultraedit-16-hex
PHP 漢字を 16 進数に変換する原理は、まず ord() 関数を使用してそれぞれの 10 進数を取得することです。漢字の詳細については、「PHP 関数編 ord() 関数と chr() 関数の応用をマスターする」を参照し、dechex() 関数を使用して各漢字を 16 進数に変換します

ソースコード例


をコピーします。 code コードは次のとおりです:
$string = "No
$length = strlen($string);
echo $string;
$result = array();
//Decimal
for($i= 0;$i<$length;$i++){
if(ord($string[$i])>127){
$result[] = ord($string[$i]).' $string[++$i]);
}
}
var_dump($result);
//Hex
$strings = array();
foreach($result as $v){
$dec =explode(" ",$v);
$strings[ ] = dechex($dec[0])." ".dechex($dec[1]);
}
var_dump($strings);


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


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


三、漢字を2進数と8進数に変換する原理の分析
漢字を2進数と8進数に変換する原理は、変換関数が異なることを除いて、上記の16進数変換と同じです。上記のサンプルコードの実装は次のとおりです

漢字をバイナリに変換する方法は次のとおりです


コードをコピーします コードは次のとおりです:
$strings = array(); $result as $v){
$dec =explode(" ",$v) ;
$strings[] = decbin($dec[0])." ".decbin($dec[1]); var_dump($strings);


結果は次のとおりです:


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


php-dec-bin-string コードをコピーします

コードは次のとおりです:
$strings = array(); foreach($result as $v){ $dec =explode(" ",$v);
$strings [] = decoct($dec[0])." ".decoct($dec[ 1]);
結果は以下の通りです:
php-string-hex
PHPの漢字ベース変換の原理を理解した上で、PHP組み込み関数urldecode()を使用して、16進数の文字列を組み合わせて通常の漢字に変換します。次号の中国語文字エンコーディング研究シリーズの urldecode() 関数と urlencode() 関数の原理。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/324690.html技術記事 1. 中国語文字を 10 進数に変換する原理の解析 GBK エンコーディングでは、中国語文字列を取得する方法は次のとおりです。 $string = "しないでください。お兄さんに夢中になってください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。