关于vim里面二次编码问题

很多时候问题当时解决了,但是后来碰到又忘记怎么解决的了,记性老不好,还是记下笔记和大家一起分享吧。

vim里面设置好.vimrc的字符读取配置后,形式如下:
set fileencodings=ucs-bom,utf-8,gbk,big5,latin1
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
终端的编码也是UTF-8,这样,打开latin1、gbk、big5的文件的时候,vim会自动识别(需要vim7.0以上版本)其编码格式,这样看到字符不是乱码,但是我将vim自动识别的编码copy到其他文件,注意,这里的编码就在vim的操作yy的过程中,出现了二次编码的情况,其他文件一旦保存,那么其内存就会变成乱码格式,这就是二次编码乱码问题的由来。

经过hexdump乱码文件发现现在的一个汉字都成了三个字节,而且在vim打开提示无转换状态,说明这个文件目前的文字编码是UTF-8编码;而原来的文字编码可能是两个字节两个,最好的方式,转换为latin1编码重新垒码。


找到原因,则开始解决问题:
用vim打开乱码文件,在命令模式下输入:
//转换内码格式
:set fileencoding=latin1
//重新垒码
:w newfile.txt
然后打开newfile.txt看看,是不是可以看到文件不乱码了? :) 值得注意的是,看到vim打开文件的状态已经变成“已转换”,说明该文件肯定不是UTF-8编码了,具体是哪种格式呢?

当然是有办法看的:
打开的newfile.txt文件,在命令模式下输入:
:set fileencoding
注意,这里别按回车,按一下tab键(制表符),默认给出解析文件一种编码方式,这个编码方式就是文件的编码,我这里是cp936,可见是GBK的国标码。

亲爱的读者,讲到这里,您大概明白怎么回事了吧?

Monthly Archives

Pages

Powered by Movable Type 7.7.2

About this Entry

This page contains a single entry by Cnangel published on January 5, 2009 12:48 PM.

杭州的冬天 was the previous entry in this blog.

如何使用libxml2库? is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.