我需要一个我想确保用utf8编码的文件。
所以,我创建了文件
c:\> gvim umlaute.txt
在 VIM 中,我输入元音变音符号:
äöü
我检查编码...
:set enc
(VIM 回声encoding=latin1
)
然后我检查文件编码...
:set fenc
(VIM 回声fileencoding=
)
然后我写文件
:w
并检查硬盘上文件的大小:
!dir umlaute.txt
(大小为 5 个字节)这当然是预期的,3 个字节用于文本,2 个字节用于 \x0a \x0d。
好的,所以我现在将编码设置为
:set enc=utf8
缓冲区变得很奇怪
<e4><f6><fc>
我想这是我之前输入的 ascii 字符的十六进制表示。所以我重写了它们
äöü
书写、检查尺寸:
:w
:$ dir umlaute.txt
这次是 8 个字节。我想每个字符加上 \x0d \x0a 2 个字节是有意义的。
好的,所以我想确保下次打开文件时,它将使用 encodiung=utf8 打开。
:setb
:w
:$ dir umlaute.txt
11 个字节。对于 BOM (ef bb bf),这当然是 8 个(以前的)字节 + 3 个字节。
所以我
:quit
vim 并再次打开文件
并检查是否设置了编码:
:set enc
但 VIM 坚持其encoding=latin1
.
那么,为什么会这样。我本来希望 BOM 告诉 VIM 这是一个 UTF8 文件。