如何修复错误的文本文件编码?

时间:2014-02-12 17:56:47

标签: vim encoding utf-8 character-encoding

我有一个声称是UTF-8编码的文本文件。也就是说,当我打电话给file -I $file时,它会打印$file: text/plain; charset=utf-8。但是当我用UTF-8编码打开它时,一些字符似乎已损坏。也就是说,该文件假设为德语,但ö等特殊德语字符显示为ö

我猜测声称为UTF-8是错误的,并执行enca脚本来猜测实际编码。但遗憾的是enca告诉我语言de(德语)不受支持。

还有另一种修复文件的方法吗?

3 个答案:

答案 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)

要在给定的编码中正确读取文件,您需要做三件事:

    控制Vim可以存储和显示的字符的
  1. 'encoding'必须能够代表文件中的所有字符。
  2. 控制哪些编码Vim将尝试识别的
  3. 'fileencodings'必须以识别文件编码的方式设置
  4. 'fileencoding'必须正确设置,通常由'fileencodings'设置自动检测到,以保存文件的编码。
  5. 请注意,(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的字符,您需要转换它们。

编辑:如果您可以提交文件,那么