テキストストリームを作成してからsetCodec( "some_encoding")を実行すると、読み込み中のファイルがsome_encodingになっているとみなされ、QTextStream :: readAllを返すと何が起きるのか分かりませんsome_encodingのQString? QTextStream :: readAllはQStringをUnicodeで返しますか?Qtの特定のエンコーディングでファイルを正しく読み込むには?
は、ここで私は何をすべきかです:
QString read(const char* encoding)
{
QTextStream stream(&file);
stream.setCodec(encoding);
return stream.readAll();
}
しかし、私は戻ってUnicode文字列を得ることはありません。それで、最終行は、私が知りたいのは、どのようにして、あるエンコーディングのファイルを持っているのですか?すべての内容をQStringにUnicodeとして保存しますか? readAll()が指定されたエンコーディングの文字列を返す場合、QStringをそのエンコーディングからユニコードに変換するにはどうすればよいですか?
'QTextStream :: readAll'は' QString'を返します。これはUTF-16です。 「私はユニコード文字列を返さない」という意味は不明です。間違ったコーデックを使用してUTF-16に変換されたため、文字列に間違った長さ/何かがありますか? – hyde
@hyde私は私の答えで説明しました。私が間違っていると思ったのは、最初から読んでいなかったので、qDebug()に出力していました。出力が空でした。これは通常、エンコードがオフのときに起こります。私は新しいエンコーディングだから、readAllがUTF-16で文字列を返すことは知らなかった。 – Pavel