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 つある場合、この判定方法は明らかに間違っています。
コードは次のとおりです。 $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 進数と比較できます。
$dec =explode(" ",$v); $strings[] = decbin($ dec[0])." ".decbin($dec[1]); } var_dump($strings);
結果は次のとおりです。
中国語 文字を 8 進数に変換する方法は次のとおりです
コードをコピー
$dec =explode(" ",$v); $strings[] = decoct($dec[0])." ".decot($dec[1]) ; }
結果は次のとおりです。 >PHP における漢字の 16 進数変換の原理を理解した上で、PHP の組み込み関数 urldecode() を使用して 16 進数の文字を変換します。 文字列は組み合わせによって通常の漢字に変換されます。 の文字エンコーディングの原則に注意してください。 urldecode() 関数と urlencode() 関数については、漢字エンコーディング研究シリーズの次号で説明します。