如何使用 vim 将我的文件转换为 utf8?
Posted
技术标签:
【中文标题】如何使用 vim 将我的文件转换为 utf8?【英文标题】:How can I use vim to convert my file to utf8? 【发布时间】:2012-03-07 19:00:05 【问题描述】:我有一个文本文件。我被告知将其设为 UTF8。我怎样才能用 Vim 做到这一点?
【问题讨论】:
Vim's encoding options的可能重复 How can I change a file's encoding with vim?的可能重复 【参考方案1】:如果您正在编辑编码为 latin1 的文件,您会发现该缓冲区的“文件编码”设置为 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 explains,utf-8 BOM 仅表明文件 是我> utf-8); 2)当您稍后再次打开文件时,您需要再次拥有set fileencoding=utf-8
。如果你告诉 Vim 写一个,Vim 甚至不会注意到 BOM(它确实写了它)。要使 utf-8 工作,您需要在启动设置中使用它或 set encoding=utf-8
。至少,这是我系统上的故事。
很好的答案,点赞!如果您想知道它是否有效,请在之前和之后检查file -bi filename.txt
,之后您会看到"text/plain; charset=utf-8"
。【参考方案2】:
:w ++enc=utf-8 %
将文件以 utf-8 编码写入磁盘。
【讨论】:
虽然这是正确的,但与 Eric Johnson 的回答相比,您的回答不应该获得如此多的支持。原因是如果不设置fileencoding
,则:w ++enc=utf-8
一次有效,但下次运行:w
,会使用'fileencoding'
的值,如果你没有改过(明确地在编辑时,或通过重新加载文件,希望 'fencs'
设置正确并且可以很好地检测到实际编码),旧的编码将会恢复。
@MichaelKrelin-hacker,更改fileencoding
也是该问题的有效答案,IMO 不会导致养成不良习惯。不过好吧,我想这只是心情问题。
@Benoit,我并没有暗示埃里克的回答无效!如果我发现他的回答有什么奇怪的地方,那不是内容,而是他为什么要快速连续发布问题和自己问题的答案:)
@Michael Krelin - 黑客:查看常见问题解答。实际上鼓励回答您自己的问题。这是一个像这样的问答页面的重点。谁回答并不重要。
@0xC0000022L,上次我检查(现在还没有检查),在做研究之后想出一个解决方案,而不是在 分钟内发布问题和答案。也就是说,我只是在谈论他的回答有什么奇怪,而不是什么使它无效或其他什么。以上是关于如何使用 vim 将我的文件转换为 utf8?的主要内容,如果未能解决你的问题,请参考以下文章