我有一个声称是UTF-8编码的文本文件。也就是说,当我打电话给file -I $file
时,它会打印$file: text/plain; charset=utf-8
。但是当我用UTF-8编码打开它时,一些字符似乎已损坏。也就是说,该文件假设为德语,但ö
等特殊德语字符显示为ö
。
我猜测声称为UTF-8是错误的,并执行enca脚本来猜测实际编码。但遗憾的是enca告诉我语言de
(德语)不受支持。
还有另一种修复文件的方法吗?
答案 0 :(得分:2)
“ö”U + 00F6的UTF-8编码形式是0xC3 0xB6,如果这些字节在ISO-8859-1中解释,则它们是“ö”(U + 00C3 U + 00B6)。因此,要么文件实际上被读取并被解释为ISO-8859-1,即使您没有其他期望,或者存在双重编码:之前,文件或其中的一部分已被读取,就好像它是ISO-8859-1 (即使它是UTF-8),然后错误解释的数据被写成UTF-8编码。
答案 1 :(得分:2)
要在给定的编码中正确读取文件,您需要做三件事:
请注意,(2)并非严格必要,但如果检测到文件编码不正确,则需要以正确的编码手动重新读取文件。例如,使用:e ++enc=utf-8
表示未检测到的utf-8文件。
请参阅http://vim.wikia.com/wiki/Working_with_Unicode了解所有这三个概念是否正确。
答案 2 :(得分:0)
您还可以使用:set encoding
检查编码,并使用:set encoding=utf-8
进行相应设置。如果您仍然看到不正确的字符,那意味着那些未在文件中写为utf-8的字符,您需要转换它们。
编辑:如果您可以提交文件,那么