字节,字符,Unicode,utf-32,utf-16,utf-8,ASCII的含义

计算机中字节,字符,Unicode,utf-32,utf-16,utf-8的概念很容易让人混淆,理解这里概念对于程序开发来说非常重要。

字节:字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。一个字节用8位二进制表示,也就是说,一个字节的范围是0-255,用16进制表示就是0x00-0xFF

字符:表示一个符号,英文字母,汉字等等。一个字符没有特定等于多少字节。

Unicode:Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。在表示一个Unicode的字符时,通常会用“U+”然后紧接着一组十六进制的数字来表示这一个字符。在基本多文种平面(英文为 Basic Multilingual Plane,简写 BMP。它又简称为“零号平面”, plane 0)里的所有字符,要用四位十六进制数(例如U+4AE0,共支持六万多个字符,总共是256*256=65536个字符);在零号平面以外的字符则需要使用五位或六位十六进制数了。所以BMP的unicode编码字符用两个字节表示。

UTF-32:4个字节表格一个字符,完全对于unicode编码,在unicode编码前加上两个字节的0。比如:U+597D = 0x0000 597D。UTF-32的优点在于,转换规则简单直观,查找效率高。缺点在于浪费空间,同样内容的英语文本,它会比ASCII编码大四倍。这个缺点很致命,导致实际上没有人使用这种编码方法,HTML 5标准就明文规定,网页不得编码成UTF-32

UTF-8:UTF-8是一种变长的编码方法,字符长度从1个字节到4个字节不等。越是常用的字符,字节越短,最前面的128个字符,只使用1个字节表示,与ASCII码完全相同。

编号范围字节
0x0000 - 0x007F1
0x0080 - 0x07FF2
0x0800 - 0xFFFF3
0x010000 - 0x10FFFF4


UTF-16:UTF-16编码介于UTF-32与UTF-8之间,同时结合了定长和变长两种编码方法的特点。UTF-16的编码长度要么是2个字节(U+0000到U+FFFF),要么是4个字节(U+010000到U+10FFFF)

ASCII:一个字节代表一个字符,只包含英文字母,数字和一些基本符号。

参考资料:
http://www.ruanyifeng.com/blog/2014/12/unicode.html
http://www.cnblogs.com/yuguangchuan/p/4310952.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值