装好Ubuntu Kylin后,将windows代码拷贝到ubuntu下,发现如下问题
l 中文注释无法正常显示。
l 运行过程中,中文字符串比较失败。
百思不得骑姐。在查阅一番资料,多次测试后,确定这都是字符集的问题。
1. 中文注视无法正常显示
windows的默认编码方式是Ansi,而Ubuntu Kylin字符集默认是utf-8。字符集的不同直接导致ubuntu无法正常显示从widnows拷贝过来的中文。 有两种解决方式
Ø 将代码文件的编码方式转成utf-8,建议带上bom。很多工具都可以转换,比如记事本,EditPlus。
Ø 由于ANSI中文使用的是GB2312编码,让ubuntu支持GB2312。就可以正常显示中文。具体方法如下
1) 修改/var/lib/locales/supported.d/local文件,在文件中添加
zh_CN.GBK GBK
zh_CN.GB2312 GB2312
2) sudo dpkg-reconfigure --forcelocales
然后在输出的结果中会出现
zh_CN.GB2312 done
zh_CN.GBK done
出现done就成功了
3) 用户的配置文件.profile中添加
export LANG=zh_CN.gbk
2. 中文字符串比较失败
有时候代码中需要与配置文件内的中文进行比较。当代码文件与配置文件的中文编码方式不一致时,就会出现比对失败。相同的中文进行对比居然不一样,这是编码方式在捣鬼。保证编码方式一致即可。
建议: 如果项目要跨平台,建议大家将代码文件的编码方式统一成UTF-8带bom。这样widnows和linux都可以识别。程序也就不会有那么多莫名其妙的问题。
备注:
Unicode:万国码,包含所有目前所有的文字及符号。他的编码方案包括UTF-8, UTF-16, UTF-32。一般unicode默认是utf-16。
UTF-8:多字节编码,用1-4个字节来描述字符
UTF-16:双字节编码,可能为2个字节或4个字节。
UTF-32:四字节编码, 用4个字节来表示字符。
ASCII:美国信息交换标准, 用于表示英文相关, 1个字节
ANSI:美国国家标准协会,第一个字节同ASCII,后面由各个国家自己补充。需要注意的是不同国家的ANSI不兼容。中文采用GB2312编码。
GB2312:中文编码方式,包含6763个汉字,以及其他一些符号。
GBK:GB2312的超集。 包含了古汉字、繁体等其他一些内容。
Bom头:用于标识文件编码方式,非必须
详细一些信息大家可以参考雪儿浅浅的博客,总结的很好 http://blog.sina.com.cn/s/blog_4aa887440101arks.html