0

我知道文件编码很难确定。但是在 C++ 中是否有某种可行的解决方案来解决这个问题?Mb boost呢(我没找到合适的)?。

我需要确定文件的编码并将其第一行读入适当的语言环境字符串。

4

1 回答 1

0

我怀疑是否有任何体面的解决方案。我会尽力解释。如果您或多或少知道应该在文件中,则只能定义编码。然后您可以尝试以不同的方式猜测转换文件并检查结果是否符合您的预期。如果以俄语编码表为例。您拥有所有类型的变体,例如 KOI-8、CP1251、CP866,但这不是结束 =)。所有这些编码对俄语符号都有不同的映射,所以如果你读取一个文本文件并考虑错误的编码而不是正确的数据,你会得到由完全不同的字母组成的单词,尽管单词/空格和较低的 ASCII 表部分看起来绝对没问题.

关于 UTF8/16 等,您无法检测到它,但您可以检查输入文件内部是否没有非法序列,因此您可以尝试使用某种编码对其进行处理。

我认为最好的选择是首先尝试定义您计划检测的编码子集,并根据某些标准设计检测算法。

于 2013-04-20T20:08:00.813 回答