我们经常看到GB2312,UTF-8,unicode这样的术语。下面我简单总结一下。
所有的信息最终要转化成二进制在计算机中存储表达处理,字符也不例外。那么就需要一种编码方式来表示这些字符。起初数字,字符,英文字母等等字符可以用128个字符来表示,于是只要用8位,一个字节的二进制数字就可以唯一标识。这就是ASCII码。
GB2312是中文编码,两个字节。
Unicode是一个字符编码标准集,涵盖的内容最多。也算是一个纲领性的标准集,因为它没有具体的表示、存储。可以由UTF-8,UTF-16,UTF-32等几种方式。
UTF-8是Unicode的一种具体表示。1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码
1)ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版,如果是繁体中文版会采用Big5码)。2 d) j" U2 r8 s3 D6 m! n) I
2)Unicode编码指的是UCS-2编码方式,即直接用两个字节存入字符的Unicode码。这个选项用的little endian格式。1 }' Y0 W$ b, f: w2 S) p
3)Unicode big endian编码与上一个选项相对应。我在下一节会解释little endian和big endian的涵义。8 R5 n1 t: a# E0 L! w, l" e
4)UTF-8编码,也就是上一节谈到的编码方法。
延伸阅读 k* I; {9 M( T, Q
* The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets(关于字符集的最基本知识)http://www.joelonsoftware.com/articles/Unicode.html
* 谈谈Unicode编码 http://www.pconline.com.cn/pcedu/empolder/gj/other/0505/616631.html9 F6 t0 J4 v+ n& e& m9 j
* RFC3629:UTF-8, a transformation format of ISO 10646(如果实现UTF-8的规定)http://www.ietf.org/rfc/rfc3629.txt