我习惯使用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,然后更新和写入文件,它可以工作”,但我似乎遗漏了一些东西,或者他感到困惑。我不知道他说的"然后更新"是什么意思


当前回答

注意两者之间的区别

set encoding

and

set fileencoding

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

其他回答

* set encoding=utf-8 应该帮助

在读取文件之前,只在命令行上更改编码可能是有用的:

rem On MicroSoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix shell
vim --cmd 'set encoding=utf-8' file.ext

看到开始,——cmd。

虽然使用vim是完全可能的,但为什么不简单地使用iconv呢?我的意思是-加载文本编辑器只是做编码转换似乎是用太大的锤子太小的钉子。

只是:

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

做完了。

注意两者之间的区别

set encoding

and

set fileencoding

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

就像您的步骤一样,设置文件编码应该可以工作。然而,我想添加一个“设置炸弹”,以帮助编辑器考虑文件为UTF8。

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