我知道文件编码很难确定。但是在C ++中是否有某种方法可以解决这个问题? Mb提升(我没有找到任何合适的)?。
我需要确定文件的编码并将其第一行读取为适当的语言环境字符串。
答案 0 :(得分:0)
我怀疑是否有任何体面的解决方案。我会尽力解释。如果您或多或少知道应该在文件中,则只能定义编码。然后,您可以尝试以不同方式猜测转换文件,并检查结果是否与您预期的一样。如果你以俄语编码表为例。你有各种类型的变化,如KOI-8,CP1251,CP866,它不是结束=)。所有这些编码都有不同的俄罗斯符号映射,所以如果你拿一个文本文件并读取它考虑错误的编码而不是正确的数据你会有完全不同的字母形成的单词,虽然单词/空格和较低的ASCII表部分看起来绝对精细。
关于UTF8 / 16等,您无法检测到它,但您可以检查输入文件内部没有非法序列,因此您可以尝试使用特定编码对其进行处理。
我认为最好的选择是首先尝试定义您计划检测的编码子集,并根据特定标准设计检测算法。