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

 mobiledu2502861417 发布于 2022-11-30 22:39

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

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

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

    function mbstrlen($str)
    {
        $len = strlen($str);
         
        if ($len <= 0)
        {
            return 0;
        }
         
        $count  = 0;
         
        for ($i = 0; $i < $len; $i++)
        {
            $count++;
            if (ord($str{$i}) >= 0x80)
            {
                $i += 2;
            }
        }
         
        return $count;
    }
    2022-11-30 23:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有