By fireworks2@foxmail.com
linux下开发的同志们,经常会遇到的字符集问题,总浪费时间还很纠结!我在这里简单总结了一下,希望对你有帮助
大部分问题都是和中文相关导致的,至于其他语种的这里就不关注了。着重说GBX和UTF-8
0. UTF-8和GB系列都可以表示中文,只是内在表示方式不同而已
1. 这几种字符集,为了兼容ASCII,与原ASCII对应的那些字符的编码结果不变,即普通英文字符数字什么的,都还只是占一个字节!
2. 对于汉字,GB系列是双字节编码类的,每个汉字占两字节,而UTF-8需要用三个字节来表示
3. GB系列是逐渐扩展出来的,可表示的字符越来越多,GB2312 -> GBK -> GB18030...
4. UTF-8还有一个bom的问题,通常linux下默认创建的文件时不会加bom的,即utf-8无bom
bom就是个文件头,多了几个字节用来标记本文件的类型,用于区分utf-16 utf-32...
文件头 编码方式
00 00 FE FF UTF-32, big-endian
FF FE 00 00
UTF-32, little-endian
FE FF UTF-16, big-endian
FF FE
UTF-16, little-endian
EF BB BF
UTF-8
PS: 纯文本文件,通常不带文件头来标记文件类型,而是需要编辑器来识别。
比如,纯英文的文件,让编辑器看来,实际上各字符集根本就没什么关系,因为此时各字符集对应的结果是一致的。
还不明白?自己看看吧,推荐好文:
http://www.blogjava.net/dreamstone/archive/2006/11/28/83936.html
阅读(1536) | 评论(0) | 转发(0) |