关于unicode和utf8,utf16等
2009-11-06 21:30
344 查看
经常有人谈起……我如何把gb或unicode字符串转化成utf8字符串?这类的问题
这里按照自己的理解简要说明一下
unicode是字符编码的一个标准,这个和GB2312或者BG5等是对应的,但是unicode又有些比较高级的特殊性,unicode的编码是固定的,但是表示这个编码的形式是多种多样的,比如一个字符的unicode编码是0xABCD,可以有各种形式来表示这个0xABCD,而通常所说的"unicode字符串"是指unicode编码的双字节表示法,比如编码0xABCD就会表示成0xABCD,编码0x31就表示成双字节的0x0031,而UTF-8,UTF-16是指其他形式的表示法,比如说UTF8,见下面的对应表:
* U-00000000 – U-0000007F: 0xxxxxxx
* U-00000080 – U-000007FF: 110xxxxx 10xxxxxx
* U-00000800 – U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
* U-00010000 – U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
* U-00200000 – U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
* U-04000000 – U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
就是说在0x00-0x7f段之间的unicode字符,表示成他的本身,比如0x31(字符1)用utf-8的形式存储成0x31,占用一个字节。
0x80-0x7ff段之间的字符(二进制大于等于8位小于等于11位之内的字符)用两个字节表示,这两个字节的第一个字节的前三位为标志位(110),第二个字节的前两位(10)为标志位,剩下还有11位来表示这个11位以下的UNICODE字符的编码
其他依此类推
这样的话,使用utf-8编码,可以使UNICODE编码的大多数为英文字符(<0x7f)的字符串占用的空间最少,但是使双字节的unicode字符(比如中文)表示来需要三个字节,比起纯粹的双字节表示的unicode字符串来说,各有利弊吧
这里按照自己的理解简要说明一下
unicode是字符编码的一个标准,这个和GB2312或者BG5等是对应的,但是unicode又有些比较高级的特殊性,unicode的编码是固定的,但是表示这个编码的形式是多种多样的,比如一个字符的unicode编码是0xABCD,可以有各种形式来表示这个0xABCD,而通常所说的"unicode字符串"是指unicode编码的双字节表示法,比如编码0xABCD就会表示成0xABCD,编码0x31就表示成双字节的0x0031,而UTF-8,UTF-16是指其他形式的表示法,比如说UTF8,见下面的对应表:
* U-00000000 – U-0000007F: 0xxxxxxx
* U-00000080 – U-000007FF: 110xxxxx 10xxxxxx
* U-00000800 – U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
* U-00010000 – U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
* U-00200000 – U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
* U-04000000 – U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
就是说在0x00-0x7f段之间的unicode字符,表示成他的本身,比如0x31(字符1)用utf-8的形式存储成0x31,占用一个字节。
0x80-0x7ff段之间的字符(二进制大于等于8位小于等于11位之内的字符)用两个字节表示,这两个字节的第一个字节的前三位为标志位(110),第二个字节的前两位(10)为标志位,剩下还有11位来表示这个11位以下的UNICODE字符的编码
其他依此类推
这样的话,使用utf-8编码,可以使UNICODE编码的大多数为英文字符(<0x7f)的字符串占用的空间最少,但是使双字节的unicode字符(比如中文)表示来需要三个字节,比起纯粹的双字节表示的unicode字符串来说,各有利弊吧
相关文章推荐
- 关于unicode、utf8、utf16、gb2312和GBK的一些理解
- 关于unicode、utf8、utf16、gb2312和GBK的一些理解
- 从字符编码的发展历史理解ANSI、GB2312、Unicode、UTF8和UTF16区别
- 对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16,GBK,GB2312的理解
- ACSII,GB2312,GBK,GB18030,Unicode,UTF8,UTF16,UTF32,BOM区别与转换——字符编码最全总结
- 关于UNICODE转化成UTF8和POST
- unicode utf8 utf16区别和联系
- ANSI,ASCII,Unicode,UTF8 , UTF16的区别与联系
- unicode, utf8, utf16, utf32
- 关于UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE
- 关于UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE
- 聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)以及乱码问题的解决办法
- 关于unicode,mbcs,utf8,charset,encoding等相关概念的说明
- mysql关于utf8_unicode_ci与utf8mb4_unicode_ci的区别
- 关于unicode,mbcs,utf8,charset,encoding等相关概念的说明
- 对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16,GBK,GB2312的理解
- 关于ASCII、GB231、GBK、UTF-8/UTF8、ANSI、unicode的学习笔记
- 关于unicode,mbcs,utf8,charset,encoding等相关概念的说明
- 关于utf8 unicode gbk 编码乱码汇总
- 所谓编码--泛谈ASCII、Unicode、UTF8、UTF16、UCS-2等编码格式