在 Qt 中,有没有办法检查字节数组是否是有效的 UTF-8 序列?
看起来QString::fromUtf8() http://qt-project.org/doc/qt-5.0/qtcore/qstring.html#fromUtf8默默地抑制或替换无效序列,而不通知调用者存在任何无效序列。这是来自它的文档:
然而,无效的序列可能是
UTF-8,如果发现任何此类,它们将被替换为一个或
更多“替换字符”,或者被压制。
尝试用QTextCodec::toUnicode http://qt-project.org/doc/qt-4.8/qtextcodec.html#toUnicode-2并通过一个转换器状态 http://qt-project.org/doc/qt-4.8/qtextcodec-converterstate.html实例。 ConverterState 有这样的成员invalidChars
。虽然它们没有通过 doxygen 记录,但我假设它们是公共 API,正如 QTextCodec 文档中提到的那样。
示例代码:
QTextCodec::ConverterState state;
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
const QString text = codec->toUnicode(byteArray.constData(), byteArray.size(), &state);
if (state.invalidChars > 0) {
qDebug() << "Not a valid UTF-8 sequence.";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)