不能在Qt中读取utf-8文件

Not able to reading utf-8 file in Qt

本文关键字:utf-8 文件 读取 Qt 不能      更新时间:2023-10-16

我正在读取一个utf-8编码的文件。下面是我的代码。

QFile file("file.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
  return 1;
}
QTextStream ts(&file);
ts.setCodec( "UTF-8" );
QString str = ts.readLine();    
qDebug() << str << str.toUtf8().toHex();

输出:"? ?"f09d9c86"

文件只包含一个字符Lambda的unicode值是3bb,其utf等价值是cebb那么为什么我得到的输出是f09d9c86

当我在代码中硬编码字符串时,我得到正确的结果。

QString str = QString::fromWCharArray(L"  ");
qDebug() << str << str.toUtf8().toHex();

我做错了什么吗?请帮助。

(U+1D706 MATHEMATICAL ITALIC SMALL lambda)的UTF-8表示为f0 9d 9c 86