[转贴] 对UTF8编码的初步认识

在网络中有很多地方都有采用UTF8编码,由于要编写与邮件服务端有关的程序,而邮件服务端有些地方用到了UTF8编码,所以对它有了初步的认识! 它其实和Unicode是同类,就是在编码方式上不同! 首先UTF8编码后的大小是不一定,不像Unicode编码后的大小是一样的! 我们先来看Unicode的编码:一个英文字母 “a” 和 一个汉字 “好”,编码后都是占用的空间大小是一样的,都是两个字节! 而UTF8编码:一个英文字母“a” 和 一个汉字 “好”,编码后占用的空间大小就不样了,前者是一个字节,后者是三个字节! 现在就让我们来看看UTF8编码的原理吧:    因为一个字母还有一些键盘上的符号加起来只用二进制七位就可以表示出来,而一个字节就是八位,所以UTF8就用一个字节来表式字母和一些键盘上的符号。 然而当我们拿到被编码后的一个字节后怎么知道它的组成?它有可能是英文字母的一个字节,也有可能是汉字的三个字节中的一个字节!所以,UTF8是有标志位 的!   当要表示的内容是 7位 的时候就用一个字节:0*******   第一个0为标志位,剩下的空间正好可以表示ASCII 0-127 的内容。   当要表示的内容在 8 到 11 位的时候就用两个字节:110***** 10******   第一个字节的110和第二个字节的10为标志位。   当要表示的内容在 12 到 16 位的时候就用三个字节:1110***** 10****** 10******    和上面一样,第一个字节的1110和第二、三个字节的10都是标志位,剩下的空间正好可以表示汉字。   以此类推:         四个字节:11110**** 10****** 10****** 10******   五个字节:111110*** 10****** 10****** 10****** 10******    六个字节:1111110** 10****** 10****** 10****** 10****** 10******    .............................................        .............................................. 明白了没有? 编码的方法是从低位到高位 现在就让我们来看看实例吧!  黄色为标志位 其它着色为了显示其,编码后的位置

Unicode十六进制

Unicode二进制

UTF8二进制

UTF8十六进制

UTF8字节数

B

00001011

00001010

B

1

9D

00010011101

11000010 10011101

C2 9D

2

A89E

10101000 10011110

11101010 10100010 10011110

EA A2 9E

3

转自 http://dev.csdn.net/article/40/40146.shtm GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。 至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。

utf8,gbk有什么区别?

GBK包含全部中文字符, UTF-8则包含全世界所有国家需要用到的字符。 GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准) UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。 比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。 所以,对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值