(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');
字符串较短时可能会判断错误
八位二进制位表示一个字符,第一位用作校验
缺点:字符太少
(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');
字符串较短时可能会判断错误