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

Qt-如何使用QTextStream readAll检测可能的无效数据丢失?,qt,utf-8,Qt,Utf 8,我正在读取一个文件,该文件应该使用QTextStream::readAll()进行UTF-8编码。如果我试图打开损坏的UTF-8文件(或二进制文件),我想知道数据不是有效的UTF-8 我尝试在读取后检查状态(),但它没有显示任何异常情况 我知道我可以以二进制模式读取整个文件,然后自己编写一个例程来检查它,但似乎应该有一个更简单的方法,因为读取已经完成了所有UTF-8转换。您可以使用QTextCodec进行此操作 QTextCodec * QTextCodec::codecForUtfText(c

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

我尝试在读取后检查
状态()
,但它没有显示任何异常情况


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

您可以使用QTextCodec进行此操作

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

尝试使用 BOM(字节顺序标记),并返回一个 能够将文本解码为unicode。如果编解码器无法正常工作 从提供的内容中检测到,将返回defaultCodec


这实际上检查了整个文件吗?我需要知道整个文件是否有效UTF-8。