【问题标题】:How can I use vim to convert my file to utf8?如何使用 vim 将我的文件转换为 utf8?
【发布时间】:2012-03-07 19:00:05
【问题描述】:

我有一个文本文件。我被告知将其设为 UTF8。我怎样才能用 Vim 做到这一点?

【问题讨论】:

标签: vim utf-8


【解决方案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,上次我检查(现在还没有检查),在做研究之后想出一个解决方案,而不是在 分钟内发布问题和答案。也就是说,我只是在谈论他的回答有什么奇怪,而不是什么使它无效或其他什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2016-02-20
  • 2012-01-09
  • 2015-05-27
  • 2017-02-24
相关资源
最近更新 更多