最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP中實(shí)現(xiàn)中文字符進(jìn)制轉(zhuǎn)換原理分析

 更新時(shí)間:2011年12月06日 01:02:31   作者:  
中文字符編碼研究系列第四期,PHP實(shí)現(xiàn)中文字符進(jìn)制轉(zhuǎn)換原理分析,主要討論中文漢字轉(zhuǎn)換為十進(jìn)制和十六進(jìn)制的方法,并掌握轉(zhuǎn)換原理應(yīng)用于實(shí)際開(kāi)發(fā)。本文以GBK編碼字符為例,討論GBK編碼的字符轉(zhuǎn)換原理
一,中文字符轉(zhuǎn)十進(jìn)制原理分析

GBK編碼中一個(gè)漢字由二個(gè)字符組成,獲取漢字字符串的方法如下
復(fù)制代碼 代碼如下:

$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);

php-ord-dec-number
由于一個(gè)漢字為兩個(gè)字符組成,通過(guò)ord()函數(shù)獲取字符的ASCII值如果大于127時(shí),就可以確定當(dāng)前字符為一個(gè)漢字的前半部分,還需要獲取漢字的后半部分。當(dāng)然,這種判斷的方法要結(jié)合具體的開(kāi)發(fā)環(huán)境,如果存在ASCII值大于127的單個(gè)字符,這種方法判斷顯然就不正確。

PHP實(shí)現(xiàn)中文字符轉(zhuǎn)十進(jìn)制的原理就是通過(guò)for循環(huán)的方法獲取一個(gè)漢字的二個(gè)字符,然后使用ord()函數(shù)把各字符轉(zhuǎn)換為十進(jìn)制。如上分別是:不 [178 187] 要 [210 170] 迷 [195 212] 戀 [193 181] 哥 [184 231]

二,中文字符轉(zhuǎn)十六進(jìn)制原理分析

使用UltraEdit開(kāi)發(fā)工具可以直接查看中文字符的十六進(jìn)制,如下圖

如,查看“不要迷戀哥”這五個(gè)字的十六進(jìn)制
ultraedit-16-hex
從上面的圖可以知道各個(gè)漢字對(duì)應(yīng)該的十六進(jìn)制字符分別是:不 B2BB 要 D2AA 迷 C3D4 戀 C1B5 哥 B8E7

PHP 實(shí)現(xiàn)中文字符轉(zhuǎn)十六進(jìn)制的原理就是首先使用ord()函數(shù)取出各個(gè)中文字符的十進(jìn)制,具體可查看[PHP函數(shù)篇掌握ord()與chr()函數(shù)應(yīng)用],然后使用dechex()函數(shù)把各個(gè)中文字符轉(zhuǎn)化為十六進(jìn)制

實(shí)例源代碼
復(fù)制代碼 代碼如下:

$string = "不要迷戀哥";
$length = strlen($string);
echo $string;
$result = array();
//十進(jìn)制
for($i=0;$i<$length;$i++){
if(ord($string[$i])>127){
$result[] = ord($string[$i]).' '.ord($string[++$i]);
}
}
var_dump($result);
//十六進(jìn)制
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = dechex($dec[0])." ".dechex($dec[1]);
}
var_dump($strings);

結(jié)果如下圖

php-dec-hex-string

通過(guò)上面的方法實(shí)現(xiàn)把中文字符轉(zhuǎn)換為十六進(jìn)制,輸出結(jié)果可對(duì)比使用UltraEdit開(kāi)發(fā)工具獲取的十六進(jìn)制。

三,中文字符轉(zhuǎn)二進(jìn)制和八進(jìn)制原理分析

實(shí)現(xiàn)中文字符轉(zhuǎn)二進(jìn)制和八進(jìn)制與上面的十六進(jìn)制轉(zhuǎn)換原理一樣,只是轉(zhuǎn)換的函數(shù)不同,結(jié)合上面的實(shí)例代碼,實(shí)現(xiàn)如下

中文字符轉(zhuǎn)二進(jìn)制,方法如下
復(fù)制代碼 代碼如下:

$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = decbin($dec[0])." ".decbin($dec[1]);
}
var_dump($strings);

結(jié)果如下:
php-dec-bin-string
中文字符轉(zhuǎn)八進(jìn)制,方法如下
復(fù)制代碼 代碼如下:

$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = decoct($dec[0])." ".decoct($dec[1]);
}

結(jié)果如下:
php-string-hex
了解PHP實(shí)現(xiàn)中文字符進(jìn)制轉(zhuǎn)換原理,再通過(guò)PHP內(nèi)置函數(shù)urldecode()就可以把十六進(jìn)制的字符串通過(guò)組合轉(zhuǎn)換為正常的中文漢字,請(qǐng)關(guān)注下一期中文字符編碼研究系列之urldecode()與urlencode()函數(shù)字符編碼原理。

相關(guān)文章

  • PHPCMS的使用小結(jié)

    PHPCMS的使用小結(jié)

    前段時(shí)間仔細(xì)看了一下PHPCMS這套開(kāi)源的系統(tǒng),實(shí)現(xiàn)了程序與模板分離,覺(jué)得寫(xiě)得真的不錯(cuò)。本人很少關(guān)注開(kāi)源系統(tǒng),尤其是PHP的,覺(jué)得PHP本身就是一個(gè)寵大的函數(shù)庫(kù),不過(guò)幾千個(gè)系統(tǒng)函數(shù)確實(shí)解決了不少問(wèn)題。
    2010-09-09
  • 自動(dòng)分頁(yè)的不完整解決方案

    自動(dòng)分頁(yè)的不完整解決方案

    自動(dòng)分頁(yè)的不完整解決方案...
    2007-01-01
  • php定義參數(shù)數(shù)量可變的函數(shù)用法實(shí)例

    php定義參數(shù)數(shù)量可變的函數(shù)用法實(shí)例

    這篇文章主要介紹了php定義參數(shù)數(shù)量可變的函數(shù)用法,實(shí)例分析了func_get_args的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 詳解PHP解決守護(hù)進(jìn)程Redis假死

    詳解PHP解決守護(hù)進(jìn)程Redis假死

    公司業(yè)務(wù)有一個(gè)常駐后臺(tái)運(yùn)行的守護(hù)進(jìn)程。在這個(gè)守護(hù)進(jìn)程當(dāng)中使用了 Redis List 結(jié)構(gòu)保存業(yè)務(wù)數(shù)據(jù)進(jìn)行隊(duì)列消費(fèi)。結(jié)果運(yùn)行過(guò)程中,有時(shí)候半個(gè)月,有時(shí)候幾個(gè)月就會(huì)突然不再消費(fèi)隊(duì)列里面的數(shù)據(jù)。我們發(fā)現(xiàn)進(jìn)行心中檢測(cè)之后,程序的穩(wěn)定性大大提高。
    2021-06-06
  • 解決PHP程序運(yùn)行時(shí):Fatal error: Maximum execution time of 30 seconds exceeded in的錯(cuò)誤提示

    解決PHP程序運(yùn)行時(shí):Fatal error: Maximum execution time of 30 seconds

    最近做的程序中涉及到的循環(huán)比較多且處理的情況較復(fù)雜,在運(yùn)行程序時(shí)出現(xiàn)執(zhí)行超時(shí)提示如下:Fatal error: Maximum execution time of 30 seconds exceeded in D:\php\AppServ\www\sum3\test.php on line 3通過(guò)在網(wǎng)上搜索,找到了解決方法和大家分享,下面來(lái)一起看看吧。
    2016-11-11
  • 如何用Laravel包含你自己的幫助函數(shù)

    如何用Laravel包含你自己的幫助函數(shù)

    你可能想創(chuàng)建一個(gè)在應(yīng)用的任何地方都可以訪(fǎng)問(wèn)的函數(shù),這個(gè)篇文章將帶你解決此問(wèn)題,感興趣的同學(xué),可以參考下。
    2021-05-05
  • PHP中filter函數(shù)校驗(yàn)數(shù)據(jù)的方法詳解

    PHP中filter函數(shù)校驗(yàn)數(shù)據(jù)的方法詳解

    這篇文章主要是介紹PHP中filter函數(shù)校驗(yàn)數(shù)據(jù)的方法詳解,PHP過(guò)濾器包含兩種類(lèi)型:Validation用來(lái)驗(yàn)證驗(yàn)證項(xiàng)是否合法 、Sanitization用來(lái)格式化被驗(yàn)證的項(xiàng)目,因此它可能會(huì)修改驗(yàn)證項(xiàng)的值,將不合法的字符刪除,需要的朋友可以參考下
    2015-07-07
  • php數(shù)組比較實(shí)現(xiàn)查找連續(xù)數(shù)的方法

    php數(shù)組比較實(shí)現(xiàn)查找連續(xù)數(shù)的方法

    這篇文章主要介紹了php數(shù)組比較實(shí)現(xiàn)查找連續(xù)數(shù)的方法,實(shí)例分析了php數(shù)組查找及字符串操作的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • php實(shí)現(xiàn)有序數(shù)組打印或排序的方法【附Python、C及Go語(yǔ)言實(shí)現(xiàn)代碼】

    php實(shí)現(xiàn)有序數(shù)組打印或排序的方法【附Python、C及Go語(yǔ)言實(shí)現(xiàn)代碼】

    這篇文章主要介紹了php實(shí)現(xiàn)有序數(shù)組打印或排序的方法,涉及php針對(duì)數(shù)組的遍歷、判斷、構(gòu)造與合并等常用操作技巧,并附帶了Python、C及Go語(yǔ)言的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-11-11
  • 發(fā)款php蜘蛛統(tǒng)計(jì)插件只要有mysql就可用

    發(fā)款php蜘蛛統(tǒng)計(jì)插件只要有mysql就可用

    有時(shí)候我們?yōu)榱丝匆幌轮┲肱佬械那闆r,不得不對(duì)日志進(jìn)行大量的分析,由此想做一款插件可以記錄蜘蛛的情況。在第一次做的時(shí)候,只是記錄下蜘蛛的爬行次數(shù),不大好分析。
    2010-10-10

最新評(píng)論

喀喇| 白河县| 丹阳市| 芦溪县| 和硕县| 清丰县| 兰考县| 湟源县| 宁陕县| 东山县| 乌什县| 东山县| 宁明县| 洪洞县| 昌乐县| 榆树市| 邓州市| 平武县| 台南市| 海安县| 通化市| 固阳县| 江山市| 阳新县| 德保县| 威信县| 凤庆县| 陆河县| 罗平县| 巴彦淖尔市| 翼城县| 安宁市| 荥经县| 绩溪县| 通辽市| 洛扎县| 贵港市| 凌云县| 常州市| 宁明县| 侯马市|