Posted on 2010-12-17 10:50
kangaroo 阅读(1221)
评论(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