-
- //漢字を16進エンコーディングに変換します
- function hexencode($s) {
- return preg_replace('/(.)/es',"str_pad(dechex(ord('\1 ' )),2,'0',str_pad_left)",$s);
- }
- //16 進エンコーディングを漢字に変換します
- function hexdecode($s) {
- return preg_replace('/(w{2}) /e ',"chr(hexdec('\1'))",$s);
- }
- echo hexdecode(hexencode("北京へようこそ!"));
- ?>
コードをコピー
方法 2 、
-
- echo rawurlencode("ようこそ北京へ").'
';
-
コードをコピー
文字列を返します。この文字列内の文字以外の文字は -_ を除きます。パーセント記号 (%) の後に 2 桁の 16 進数が続くものに置き換えてください。
デコードするには: rawurldecode
方法3、
gbkバージョン:
gbk エンコードでは、中国語の文字は 2 つの文字で構成されます。
ord() 関数で取得した文字の ASCII 値が 127 より大きい場合、現在の文字は漢字の前半であると判断でき、漢字の後半を取得する必要があります。
もちろん、この判断方法は特定の開発環境と組み合わせる必要がありますが、ascii 値が 127 を超える文字が 1 つある場合、この判断方法は明らかに間違っています。
PHP で漢字を 10 進数に変換する原理は、for ループ メソッドを通じて漢字の 2 文字を取得し、ord() 関数を使用して各文字を 10 進数に変換することです。
上記は次のとおりです: いいえ [178 187] 欲しい [210 170] ファン [195 212] 愛 [193 181] 兄弟 [184 231]
PHP は、中国語の文字を 16 進数に変換する原則を実装しています。
まず ord() 関数を使用して各漢字の 10 進数を取得します。詳しくは [ord() 関数と chr() 関数の応用をマスターするための php 関数の記事] を参照してください。その後、dechex() 関数を使用します。各漢字を 16 進数に変換します。
コード:
$string = "北京へようこそ!"; - $length = strlen($string);
- $result = array(); ($i=0;$i<$length;$i++){
- if(ord($string[$i])>127){
- $result[] = ord($string[$i])。 '.ord($string[++$i]);
- }
- }
- var_dump($result);
- //Hex
- $strings = array();結果は $v){
- $dec =explode(" ",$v);
- $strings[] = dechex($dec[0])." ".dechex($dec[1])
- }
- var_dump ($strings);
-
- コードをコピー
- utf-8 バージョン:
$string = "北京へようこそ!"; $length = strlen($string); $result = array(); ;$i<$length;$i++){ if(ord($string[$i])>127){ $result[] = ord($string[$i]).' string[++$i]).'.ord($string[++$i]); var_dump($result); echo ' '; //hex を作成します$strings = array(); - foreach($result as $v){
- $dec =explode(" ",$v);
- $strings[] = dechex($dec[0])." $dec[1])." ".dechex($dec[2])
- }
- var_dump($strings);
-
-
- コードをコピー
-
-
-
-
-
-
-
-
-
-
-
-
|