如何确定文件的代码页(应用了一些代码页转换)

时间:2011-08-05 14:30:49

标签: text character-encoding

例如,如果我知道ć应该是ć,我怎样才能找到那里发生的代码页转换?

如果有一个在线网站,这将是很好的,但任何工具都可以完成这项工作。最终目标是反转代码页转换(使用 iconv 重新编码,但工具并不重要,我会采取任何有效的方法,包括python脚本)

编辑:

  

请你再详谈一下吗?您肯定知道某些子字符串应该是完全正确的。或者只知道语言?或者只是猜测?并且应用的转换是正确的(即它在其他字符集中有效)?或者它是从charset X到Y的单一转换,但文本实际上是在Z中,所以它现在错了?或者是一系列这样的转变?

实际上,理想情况下我正在寻找能告诉我发生了什么(或可能发生的事情)的工具,以便我可以尝试将其转换回正确的编码。

我正在尝试解决的问题中发生了什么(我推测)是这个answer中描述的内容 - utf-8文本文件被打开为ascii文本文件,然后导出为csv。

2 个答案:

答案 0 :(得分:3)

一般来说这很难做到。主要问题是所有基于ascii的编码(iso-8859- *,dos和windows代码页)使用相同范围的代码点,因此没有特定的代码点或代码点集将告诉您文本所在的代码页。

有一种编码很容易辨别。如果它是有效的UTF-8,那么它几乎肯定没有iso-8859- *也没有任何windows代码页,因为虽然所有字节值都有效,但有效的utf-8多字节序列出现在它们的文本中的机会是几乎为零。

这取决于可能涉及哪些进一步的编码。 Shift-JIS或Big-5中的有效序列也不太可能在任何其他编码中有效,而告诉分开类似编码如cp1250和iso-8859-2需要拼写检查包含3个左右不同的字符并且看到的字符哪种方式可以减少错误。

如果你可以限制可能发生的转换次数,那么建立一个可以尝试它们的python脚本,消除明显的错误并使用拼写检查器来挑选最可能的错误应该不会太难。我不知道有任何工具可以做到这一点。

答案 1 :(得分:0)

像这样的工具十年前非常受欢迎。但现在很难看到受损文本。

据我所知,至少可以用特定语言有效地完成。因此,如果您建议文本语言是俄语,您可以使用大量示例文本收集有关字符或小字符组的一些统计信息。例如。在英语中,“th”组合比“ht”更常出现。

因此,您可以置换不同的编码组合,并选择具有更多可能的文本统计信息的组合。