如何使用vim将文件转换为utf8?


Answers:


178

如果您正在编辑编码为latin1的文件,则会发现该缓冲区的'fileencoding'设置为latin1。因此,在保存文件之前,您需要手动设置文件编码。

:set fileencoding=utf8
:w myfilename

另请注意,UTF8文件通常以指示字节序的字节顺序标记(BOM)开头。该BOM是可选的,但有些程序使用独有的确定文件的编码。在某些情况下,Vim会编写BOM,但有时不会。要显式设置BOM,请执行以下操作:

:set bomb

欲了解更多信息:help mbyte-options:help utf8:help bomb


这些指令可以正常工作,但是:1)utf-8没有字节序(如vim help解释,utf-8 BOM仅指示文件 utf-8);2)稍后再次打开文件时,您需要set fileencoding=utf-8重新放置。如果您告诉BOM编写一个,Vim甚至不会注意到该BOM(并且确实会编写它)。要使utf-8正常工作,您需要set encoding=utf-8在启动设置中进行设置。至少,这就是我系统上的故事。
斯坦因

35
:w ++enc=utf-8 %

将utf-8编码的文件写入磁盘。


5
尽管这是正确的,但与埃里克·约翰逊(Eric Johnson's)相比,您的答案应该不会收集太多的支持。原因是,如果未设置fileencoding:w ++enc=utf-8则一次有效,但下次运行时:w'fileencoding'将使用的值,并且如果尚未更改(明确地在编辑时,或者通过重新加载文件,希望其'fencs'被适当地设定和实际的编码是公检测的),旧的编码会回来。
Benoit 2012年

1
@ MichaelKrelin-hacker,更改fileencoding也是对该问题的有效答案,这并不意味着IMO会导致不良习惯。好的,那只是我想的问题。
Benoit

3
@Benoit,我并不是说Eric的答案无效!如果我发现他的答案有任何奇怪之处,不是内容,而是他为什么连续快速发布问题和自己的问题的答案:)
Michael Krelin-hacker 2012年

3
@Michael Krelin-黑客:请查看常见问题。实际上鼓励您回答自己的问题。这就是这样的问答页面的全部内容。谁回答都没有关系。
0xC0000022L13年

2
@ 0xC0000022L,我上次检查(现在尚未检查)时,有一些关于在完成研究后提出解决方案的事情,而不是在一分钟内发布问题和答案。就是说,我只是在谈论他的答案有什么奇怪之处,不是在说什么使它无效或什么。
Michael Krelin-黑客
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.