2011-12-23 33 views
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(); 

私は何か間違っていますか?助けてください。

+0

ファイルの内容はどれくらいですか? (ブラウザからutf-8コンソールにその文字をコピー/貼り付けることはうまくいかない)16進エディタや 'hexdump -C'で入力ファイルを調べることはできますか? – Mat

+0

qDebug()はエンコーディングをテストする良い方法ではありません。コンソール上で終わるものは、シェルの設定など、多くの要因によって異なります。QWidgetに表示することでテストが改善されます。 –

答えて

4

(U + 1D706 MUSTEMATICAL ITALIC SMALL LAMDA)のUTF-8表現は、f0 9d 9c 86です。

関連する問題