编码总结

(1)ASCII码:
八位二进制位表示一个字符,第一位用作校验
缺点:字符太少


(2)unicode
只是一个符号集,规定了符号的二进制代码,但没有规定二进制代码如何存储。
待解决:如何区别unicode和ascii,如何知道几个字节表示一个字符,存储空间浪费


(3)UTF-8
是unicode的一种实现方式
特点:变长编码(1-4字节)
规则:对于单字节符号:字节第一位设为0,后七位位unicode码;对于n字节符号(n>1),
前n位都设为1,第n+1位位0,后面字节的前两位一律设为10,剩下的二进制位位该符号的unicode码
UTF-16字符采用2个或4个字节表示,UTF-32采用4个字节表示一个字节


(4)Little endian和Big endian
大端:字节顺序,小端:字节逆序;unicode规定在文件开头加入“零宽度非换行空格”,FEFF表示大端,FFFE表示小端


(5)三个PHP编码转换函数:
mb_substr($str,$start,$lenth,$encoding)//无需指明原编码
mb_convert_encoding( $str, $encoding1,$encoding2 )//效率较低
iconv("UTF-8","GB2312//IGNORE",$data)//遇到错误会停止转换


(6)PHP 中,如何判别一个字符串是 UTF8 还是 GBK 编码的?
$encode = mb_detect_encoding($keytitle, array('ASCII','GB2312','GBK','UTF-8');
字符串较短时可能会判断错误





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值