1
utf-8エンコーディングでファイルを読み込んでいます。以下は私のコードです。Qtで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」
ファイルは一つだけの文字が含まれています。ieLambdaラムダの Unicode値は3BBであり、そのUTF同等は、私が取得するコード内の文字列をハードコーディングするとき が、なぜ私はf09d9c86
として出力を取得していますcebbです正しい結果。
QString str = QString::fromWCharArray(L"");
qDebug() << str << str.toUtf8().toHex();
私は何か間違っていますか?助けてください。
ファイルの内容はどれくらいですか? (ブラウザからutf-8コンソールにその文字をコピー/貼り付けることはうまくいかない)16進エディタや 'hexdump -C'で入力ファイルを調べることはできますか? – Mat
qDebug()はエンコーディングをテストする良い方法ではありません。コンソール上で終わるものは、シェルの設定など、多くの要因によって異なります。QWidgetに表示することでテストが改善されます。 –