1

ANSI形式でエンコードされたファイルが1つあり(Notepad ++でANSIでエンコードされているように表示されます)、特殊文字(摂氏度、ポンドなど)も表示され、読み取り中にすべての文字をユニコードに変換したいと思います。

C/C++ または Qt で ANSI を Unicode に変換するにはどうすればよいですか?

4

3 に答える 3

1

私のQtはまだ非常にさびていますが、次の行に沿ったものです:

QFile inFile("foo.txt");
if (!inFile.open(QIODevice::ReadOnly | QIODevice::Text))
    return;

QFile outFile("foo.out.txt");
if (!outFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
    return;

QTextStream in(&inFile);
QTextStream out(&outFile);
out.setCodec("UTF-8");

while (!in.atEnd()) {
    QString line = in.readLine();
    out << line;
}

と のドキュメントからまとめたものでQFileQTextStreamどちらにもファイルの読み取りと書き込みの例が含まれています。のデフォルトQTextStreamは従来のエンコーディングを使用するため、 output に明示的なエンコーディングを設定するだけで済みますQTextStream

ファイルが大きすぎない場合は、おそらく使用することもできます

out << in.readAll();

行上のループの代わりに。ループは特に、出力ファイルに末尾の改行を追加する可能性があります (ただし、ドキュメントはそれについてあまり明確ではありません)。

于 2012-04-26T05:49:36.283 に答える
0

お役に立てれば。

http://geekswithblogs.net/dastblog/archive/2006/11/24/98746.aspx

于 2012-04-26T05:42:10.120 に答える
0

で読むだけQTextStreamです。QTextCodec::codecForLocale8 ビット文字から Unicode へのデフォルト (「ANSI」) 変換を使用するが適用されます。

ANSI の概念がないため、ANSI テキスト ファイルを Mac または Linux にコピーした場合、これは機能しないことに注意してください。それらの場合、ANSI テキスト ファイルは ASCII 形式になるため、最初に Unicode (UTF-8) に変換してからコピーする必要があります。

于 2012-04-26T07:48:10.597 に答える