快速理解编码,unicode与utf-8

1.为何编码,由于cpu只认识数字
2.ASCII 一个字符共占7位,用一个字节表示,共128个字符
3.那么ASCII浪费了最高位多惋惜,出现了
ISO-8859-1,一个字节,256个字符,不少协议的默认编码
4.中文编码
GB2132 两个字节,大陆使用,表示约6k个字符
BIG5 两个字节,繁体字编码标准,共表示1.3w个字符
GBK 扩展了GB2132,能表示2w个汉字,不兼容BIG5html

Unicode
又称万国码,源于一个组织,一共有两个组织,都是为了构建出一种能表示地球全部字符的编码,其中一个就是unicode,unicode是准确说是一个字符表,每一个字符对应一个数字,称为码点,兼容ACSII,即a对应数字96,目前来讲16位长度还未占满,因此有人说unicode字符占两个字节,这绝对是一种误解,unicode只是定义了哪一个字符对应哪一个数字,就这么简单。java

java与unicode
java中为了存储字符时统一映射关系,存储与编码无关的unicode码点,否则一会存一个gbk字符,又来一个big5字符,连打印字符串都有问题了。编码

utf
那么unicode只是定义映射关系的话,具体怎么存储,用几个字节存呢
目前有ucs和utf两种思路。
utf-8 由于节省流量,互联网用的较多
用1,2,3,4个字节存储一个字符,一般来讲英文字符一个字节,汉子三个字节
具体格式参考连接
uft16与bom
采用2.4字节存储,那么为了区分高字节在前仍是在后,就须要在字节流前加特殊的BOM字节表示,utf8不须要bom,只是微软有这个习惯。code

更加详细的描述推荐  http://www.javashuo.com/article/p-axnhjzqz-mr.htmlhtm

相关文章
相关标签/搜索