如果我在Vim / Linux中使用:set fileencoding=utf-8
创建了一个文件,并且文件中有变音符号(例如德语变音符号),那么调用file myfile.txt
结果为myfile.txt: UTF-8 Unicode text
。如果文件中没有变音符号,则确定文件编码结果为myfile.txt: ASCII text
。
为什么?我如何安全地确定,使用UTF-8文件编码正确编码了一大堆文件?
编辑:
ASCII是7位,是UTF-8的子集。我想知道我的源文件是否以UTF-8编码,以便将来某个时候可以保存变音符号。 IMO这并不明显,我想找到一种方法来安全地确定这一点。
答案 0 :(得分:0)
没有通用且可靠的方法来查找文本文件使用的编码。此外,相当多的编码是ASCII-7的超集(UTF-8,ISO 8859- *,...)
在UTF-8的情况下,一个技巧是在文件的开头添加(否则不必要的)BOM(字节顺序标记)。在这种情况下,file
会显示如下内容:
some.txt: UTF-8 Unicode (with BOM) text
我认为对于vim
,选项是::set bomb
不幸的是,虽然大多数编辑都了解BOM,但bash却没有。不要将它添加到shell脚本中!