当前位置:  开发笔记 > 前端 > 正文

如何使用vim更改文件的编码?

如何解决《如何使用vim更改文件的编码?》经验,为你挑选了4个好方法。

我习惯使用vim来修改文件的行结尾:

$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators

是否可以使用类似的过程来更改文件的unicode编码?我正在尝试以下方法,但这不起作用:

$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian

我看到有人说他可以"设置fileencoding = utf-8,然后更新并写入文件,它可以工作",但我似乎错过了一些东西,否则他很困惑.我不知道"然后更新"是什么意思.



1> Brian Agnew..:

来自doc:

:写++ enc = utf-8 russian.txt

因此,您应该能够将编码更改为write命令的一部分.


更新的文档链接:http://vimdoc.sourceforge.net/htmldoc/usr_45.html#45.4

2> Johan..:

请注意,两者之间存在差异

set encoding

set fileencoding

在第一种情况下,您将更改终端中显示的输出编码.在第二种情况下,您将更改所写文件的输出编码.



3> 小智..:

虽然使用vim完全可以,但为什么不简单地使用iconv?我的意思是 - 加载文本编辑器只是为了进行编码转换似乎使用太大的锤子太小的指甲.

只是:

iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml

而且你已经完成了.


在Windows上可能不容易获得下行,iconv.
@AdrianoVaroliPiazza既不是vim.
它适用于Cygwin中的Windows
@ adriano-varoli-piazza否,如@ coder-tim所述,iconv在带有Cygwin和MingW的Windows上可用。

4> Francis..:

就像您的步骤一样,设置fileencoding应该可行.但是,我想添加一个"set bomb"来帮助编辑器将文件视为UTF8.

$ vim file
:set bomb
:set fileencoding=utf-8
:wq


我们所有的基本编码现在都属于UTF-8
感谢您的回答,它让我了解了有关UTF字节顺序标记的更多信息.但是,仅供参考,为UTF-8设置BOM似乎是不必要的/不可取的,因为它不是像16或32那样的固定字节长度格式.请参阅[here](http://vim.wikia.com/wiki/Working_with_Unicode)以获得解释和参考.这对于vim来说不是问题(甚至是有用的),我只是认为人们应该意识到它可能会导致其他地方的兼容性问题.
是的,VIm为我们设置了'炸弹'(用ab).
它是`炸弹'还是`bom`,它可以是'未设置'吗?**编辑**:是的,你可以通过`set nobomb`删除它.
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有