posts - 8, comments - 13, trackbacks - 0, articles - 43
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

ASCII GBK2312 GBK | UNICODE UTF-8 UTF-16 区别 关系

Posted on 2010-12-17 10:50 kangaroo 阅读(1222) 评论(0)  编辑  收藏 所属分类: programmer

ASCII是最初的计算机指定的一套符号编码,使用一个字节其中的7位,128个数值代表不同字符,对于英语这个已经是足够,
但是对于其他国家的语言,却远远不够,如汉语,日语,韩语,所以就出现了非ASCII的字符编码,如gbk2312,gbk的汉字编码。这些非ascii的编码都是兼容ascii128个符号编码的。

------------------------------------------------------------------------------------------------------------------------------------------------------

UNICODE首先只是一个字符集,它的出现就是因为各个国家出台自己的语言编码,为了统一这些所有语言,可以理解unicode是涵盖各个国家字符的集合,现在的规模可以容纳100多万个符号。需要说明的是,定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而unicode又可以用来表示所有字符,所以在很多软件内部是使用unicode编码来处理的,比如java。
unicode只是一个符号集,只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,即编码方式,常见的有utf-8和utf-16。
(如果unicode规定,每个符号用三个字节表示,那么英文字母只占用一个字节,就浪费很多存储空间。)
UTF-8就是一种变长的编码方式,它使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。


我们常用的记事本功能,在"save as"的时候,可以选择不同的编码方式,里面有四个选择:ansi,unicode,unicode big endian,utf-8:
1.ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版,如果是繁体中文版会采用Big5码)。
2.Unicode编码指的是UCS-2编码方式,即直接用两个字节存入字符的Unicode码。这个选项用的little endian格式。

3.Unicode big endian编码与上一个选项相对应。我在下一节会解释little endian和big endian的涵义。

4.UTF-8编码,也就是上一节谈到的编码方法。



参考:

http://www.cnblogs.com/pony/archive/2009/02/05/1384323.html
http://blog.chinaunix.net/u1/56156/showart_2245355.html
http://liaoshaoyao.javaeye.com/blog/667056


只有注册用户登录后才能发表评论。


网站导航: