问题产生:
现需要把一个在windows的Myeclipse下开发的小程序,转到Linux系统下去安装运行,结果程序中的.java文件中的中文到Linux下vim显示全是乱码。
现做以下分析:其主要原因是windows中Myeclipse中默认的文件编码格式为GBK或GB2312格式,而Linux系统默认的文件格式是UTF-8, 这样在windows下GBK格式的中文,到Linux下vim查看中文全部显示乱码,英文正常。
解决办法:
1. 修改vim配置文件,使得用vim可以正常查看文件中的中文字符,但是此法并没有改变源文件的编码格式
具体方法:找到linux系统下的vimrc文件(目录/usr/share/vim/vimrc)用root权限打开并在文件末尾添加下面四行代码:
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set fileformats=unix
set encoding=prc
再用vim打开,就可以正常显示乱码的文件了。(记住但并未改变源文件的编码格式,只是vim读文件时自己完成了转码) 2. 改变windows下的源码文件的编码格式为Linux下编码格式
先说下查看文件编码格式的命令:
(1)用vim打开文件的话可以输入 :set fileencoding 回车查看
(2)用命令 file 文件名 例如 file a.txt 查看a.txt 的文件编码格式
然后就是具体的转码操作:
Linux可以用iconv命令进行文档的转码操作,具体命令格式:
iconv -f GBK -t UTF-8 待转码文件名 -o 输出文件名
解释下此命令,其中 -f 接的是代转文件编码格式(即被转码格式) -t 接的是目标文件编码格式(即目标编码格式)
-o 表示输出。上面完成了 将待转码文件(GBK编码格式) 转换成 输出文件(UTF-8编码格式) ,也就是完成了从GBK到UTF-8的转换。(提示:要想转码后不产生新文件,把代转文件名和输出文件名写成同一个就行了)
举例:iconv -f ISO-8859 -t UTF-8 zhuan.java -o zhuan.java