PHP中實現中文字元進位轉換原理分析

來源:互聯網
上載者:User

一,中文字元轉十進位原理分析

GBK編碼中一個漢字由二個字元組成,擷取漢字字串的方法如下 複製代碼 代碼如下:$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);


由於一個漢字為兩個字元組成,通過ord()函數擷取字元的ASCII值如果大於127時,就可以確定當前字元為一個漢字的前半部分,還需要擷取漢字的後半部分。當然,這種判斷的方法要結合具體的開發環境,如果存在ASCII值大於127的單個字元,這種方法判斷顯然就不正確。

PHP實現中文字元轉十進位的原理就是通過for迴圈的方法擷取一個漢字的二個字元,然後使用ord()函數把各字元轉換為十進位。如上分別是:不 [178 187] 要 [210 170] 迷 [195 212] 戀 [193 181] 哥 [184 231]

二,中文字元轉十六進位原理分析

使用UltraEdit開發工具可以直接查看中文字元的十六進位,如

如,查看“不要迷戀哥”這五個字的十六進位

從上面的圖可以知道各個漢字對應該的十六進位字元分別是:不 B2BB 要 D2AA 迷 C3D4 戀 C1B5 哥 B8E7

PHP 實現中文字元轉十六進位的原理就是首先使用ord()函數取出各個中文字元的十進位,具體可查看[PHP函數篇掌握ord()與chr()函數應用],然後使用dechex()函數把各個中文字元轉化為十六進位

執行個體原始碼 複製代碼 代碼如下:$string = "不要迷戀哥";
$length = strlen($string);
echo $string;
$result = array();
//十進位
for($i=0;$i<$length;$i++){
if(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($dec[0])." ".dechex($dec[1]);
}
var_dump($strings);

結果如

通過上面的方法實現把中文字元轉換為十六進位,輸出結果可對比使用UltraEdit開發工具擷取的十六進位。

三,中文字元轉二進位和八進位原理分析

實現中文字元轉二進位和八進位與上面的十六進位轉換原理一樣,只是轉換的函數不同,結合上面的執行個體代碼,實現如下

中文字元轉二進位,方法如下 複製代碼 代碼如下:$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = decbin($dec[0])." ".decbin($dec[1]);
}
var_dump($strings);

結果如下:

中文字元轉八進位,方法如下 複製代碼 代碼如下:$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = decoct($dec[0])." ".decoct($dec[1]);
}

結果如下:

瞭解PHP實現中文字元進位轉換原理,再通過PHP內建函數urldecode()就可以把十六進位的字串通過組合轉換為正常的中文漢字,請關注下一期中文字元編碼研究系列之urldecode()與urlencode()函數字元編碼原理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.