首頁 > 後端開發 > php教程 > javascript - php中chr()函数 为什么可以输出unicode字符?

javascript - php中chr()函数 为什么可以输出unicode字符?

WBOY
發布: 2016-06-06 20:15:18
原創
1365 人瀏覽過

php中chr()是对ascii码字符和对应的数字之间转换的
但是下面的代码为什么可以输出汉字呢?
比如汉字 '感' unt-8编码是 e6849f;

$a = chr(hexdec('e6')).chr(hexdec('84')).chr(hexdec('9f'));
echo $a;
可以输出汉字感,这是为什么?
chr对超出127的值会向后继续合并吗?

回复内容:

php中chr()是对ascii码字符和对应的数字之间转换的
但是下面的代码为什么可以输出汉字呢?
比如汉字 '感' unt-8编码是 e6849f;

$a = chr(hexdec('e6')).chr(hexdec('84')).chr(hexdec('9f'));
echo $a;
可以输出汉字感,这是为什么?
chr对超出127的值会向后继续合并吗?

ASCII码表示单字节字符(其中包括英文字母、数字、英文标点符号、不可见字符以及控制字符等等),它总是小于0x80,即小于十进制的128。当在处理字符时,如果字节小于0x80,则把它当作单字节来处理,否则会继续读取下一个字节,这通常跟编码有关,GBK会将2个字节当成一个字符来处理,UTF8则需要3个字节。有时候在PHP中需要做类似的处理,比如计算字符串中字符的个数(字符串可能包含单字节和多字节),strlen方法只能计算字节数,而mb_strlen需要开启扩展。类似这样的需求,其实很容易处理:

<code>function mbstrlen($str)
{
    $len = strlen($str);
     
    if ($len = 0x80)
        {
            $i += 2;
        }
    }
     
    return $count;
}</code>
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板