如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的 .htaccess 文件转换为 NGINX?

如何将我的 Java 程序转换为 .exe 文件?

如何在 Linux 中将文件编码转换为 UTF-8

如何将我的 .tar.gz 文件转换为 shutil.copyfileobj 的类文件对象?

如何将我的应用转换为 Android TV 应用?

如何使用 cxfreeze 将我的代码从 python3.6 转换为 exe?