windows下的文档在linux下查看,汉字会出现乱码的原因?
linux下汉字用utf-8编码,而windows下采用gb2312编码。
所以为了可以正常查看,可用命令将gb2312转化为utf-8。
如何转化?
可以用shell下编码转换工具enca。用它不仅可以转换编码,还可以查看文件的原始编码,而且还支持成批转换。安装enca很简单,一般用源安装就行了,enca用法如下:
enca -L 当前语言 文件名
enca -L zh_CN file //检查文件的编码
enca -L 当前语言 -x 目标编码 文件名
enca -L zh_CN -x UTF-8 file //将文件编码转换为”UTF-8″编码
enca -L zh_CN -x UTF-8 < file1 > file2 //如果不想覆盖原文件可以这样
除了有检查文件编码的功能以外,”enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来。
关于utf-8的问题?
常用中文字符用utf-8编码占用3个字节(大约2万多字),但超大字符集中的更大多数汉字要占4个字节(在unicode编码体系中,U+20000开始有5万多汉字)。
GBK、GB2312收编的汉字占2个字节,严格地用iso8859-1无法表示汉字,只能转为问号。
遇到的一个小问题
本应该对齐输出的,可是怎么会有这样的结果呢?
在linux下采用的是utf-8编码,一般的汉字占用三个字节。
ID 姓名 性别 民族 成绩
ID Name sex minzu grade
1 li man han 90
姓名连同后面的空格本应该占用11个字节,姓名占用6个字节,后面有五个空格,所以符合源代码的思想。这里由于linux下输出的问题,导致无法对齐,在linux下尽量不要将字母与汉字一起使用。(输出的结果为一个汉字在屏幕上不到两个字符,而在windows中采用gb2312编码,一个汉字只有两个字节,相当于2个字符,输出的格式就不会出现这种情况了)