用php完成unicode以及utf8转换的办法:起首关于【4-6】字节编码的状况不用思考;而后呈现四字节以上的【utf-8】字符,能够间接视为乱码疏忽掉或转为unicode实体方式便可,代码为【$utf8char = "&#{$c};"】。
用php完成unicode以及utf8转换的办法:
unicode编码是完成utf-8与gb系列编码(gb23十二、gbk、gb18030)转换的根底,尽管咱们也能够间接做一个utf-8到这些编码的对照表,但很少有人会这么做,由于utf-8的可变编码具备没有确定性,因而普通状况应用都是unicode与gb编码的对照表,unicode(UCS-2)其实是utf-8的根底编码,utf-8只是它的一种完成罢了,二者存正在上面的对应关系:
Unicode符号范畴 | UTF-8编码形式
u0000 0000 - u0000 007F | 0xxxxxxx
u0000 0080 - u0000 07FF | 110xxxxx 10xxxxxx
u0000 0800 - u0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
因为今朝utf-8应用的字符都是居于UCS-2的,因而关于4-6字节编码的状况是不用思考的,一样地,正在反向转换的时分,假如呈现四字节以上的utf-8字符,能够间接视为乱码疏忽掉或转为unicode实体方式("&#long int;"方式),而后交给阅读器或相干解析顺序行止理,用php把unicode转为utf-8编码的算法以下:
/* * 参数 $c 是unicode字符编码的int类型数值,假如是用二进制读取的数据,正在php中通常要用 hexdec(bin2hex( $bin_unichar )) 这样转换 */ function uni2utf8( $c ) { if ($c < 0x80) { $utf8char = chr($c); } else if ($c < 0x800) { $utf8char = chr(0xC0 | $c >> 0x06).chr(0x80 | $c & 0x3F); } else if ($c < 0x10000) { $utf8char = chr(0xE0 | $c >> 0x0C).chr(0x80 | $c >> 0x06 & 0x3F).chr(0x80 | $c & 0x3F); } //由于UCS-2只有两字节,以是前面的状况是不成能呈现的,这里只是阐明unicode HTML实体编码的用法。 else { $utf8char = "&#{$c};"; } return $utf8char; }
正在今朝的环境范畴内,能够以为 utf-8字符集==unicode(UCS-2),但从实践上,次要字符集关系的蕴含关系以下:
utf-8 > unicode(UCS-2) > gb18030 > gbk > gb2312
因而,假如编码都正确的状况下:
gb2312 => gbk => gb18030 => unicode(UCS-2) => utf-8
这样的一个转变进程,根本上是无损的,但反而言之,由
utf-8 => unicode(UCS-2) => gb18030=> gbk => gb2312
这样的转变进程,是极可能存正在不克不及辨认的字符的,因而,假如关于应用utf-8编码的零碎,只管即便没有要随意马虎的去做反向转换编码的操作。
相干学习保举:PHP编程从入门到通晓
以上就是若何用php完成unicode以及utf8的转换?的具体内容,更多请存眷资源魔其它相干文章!
标签: php php教程 utf8 php故障解决 php使用问题 unicode
抱歉,评论功能暂时关闭!