Qt - 如何使用QTextStream readAll检测可能的无效数据丢失?

时间:2015-12-30 18:53:12

标签: qt utf-8

我正在使用QTextStream::readAll()读取进行UTF-8编码的文件。如果我尝试打开损坏的UTF-8文件(或二进制文件),我想知道数据是无效的UTF-8。

我尝试在阅读后检查status(),但没有表明任何异常情况。

我知道我可以在二进制模式下读取整个文件并编写一个例程来自行检查,但似乎应该有一个更简单的方法,因为读取已经完成了所有UTF-8转换。

1 个答案:

答案 0 :(得分:0)

您可以使用QTextCodec。

QTextCodec * QTextCodec::codecForUtfText(const QByteArray & ba, QTextCodec * defaultCodec)

来自文档:

  

尝试使用以下方法检测所提供的代码段的编码   BOM(字节顺序标记)并返回一个QTextCodec实例   能够将文本解码为unicode。如果编解码器不能   从提供的内容中检测到,返回defaultCodec。