在Qt中,有没有办法检查字节数组是否是有效的UTF-8序列?
似乎QString :: fromUtf8()默默地抑制或替换无效序列,而不通知调用者有任何序列.这来自其文档:
但是,使用UTF-8可能无效序列,如果发现任何此类序列,它们将被替换为一个或多个"替换字符",或被抑制.
Fra*_*eld 19
尝试使用QTextCodec :: toUnicode并传递ConverterState实例.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.";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3732 次 |
| 最近记录: |