ANSI形式でエンコードされたファイルが1つあります(ANSIでエンコードされたNotepad ++で表示されます)。また、特殊文字(度の度合い、ポンドなど)すべての文字をUnicodeに変換します。ANSI形式のファイルをUnicodeに変換する方法
C/C++またはQtでANSIをUnicodeに変換するにはどうすればよいですか?
ANSI形式でエンコードされたファイルが1つあります(ANSIでエンコードされたNotepad ++で表示されます)。また、特殊文字(度の度合い、ポンドなど)すべての文字をUnicodeに変換します。ANSI形式のファイルをUnicodeに変換する方法
C/C++またはQtでANSIをUnicodeに変換するにはどうすればよいですか?
私Qtはまだ非常に錆びですが、以下の線に沿って何か:ファイルを読み書きするための例が含まれ、どちらもQFile
とQTextStream
の文書からつなぎ合わせ
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;
}
。 QTextStream
のデフォルトは従来のエンコーディングを使用するため、出力の明示的なエンコーディングを設定する必要があります。QTextStream
ファイルが大きすぎていない場合は
あなたはおそらくも
out << in.readAll();
代わりに回線を介してループを使用することができます。ループは特に、出力ファイルに末尾の改行を追加する可能性があります(ただし、ドキュメントはあまり明確ではありません)。
QTextStream
と読んでください。 QTextCodec::codecForLocale
が適用され、Unicodeには8ビット文字のデフォルト(ANSI)変換が使用されます。
ANSIテキストファイルをMacまたはLinuxにコピーした場合、ANSIの概念がないため、これは機能しません。それらのために、ANSIテキストファイルはASCIIのようになりますので、まずUnicode(UTF-8)に変換してからコピーしてください。
「ANSI」エンコーディングとは何ですか?それはISO-Latin-1ですか? Linux上で 'iconv'コマンドを試してみることもできますか? –
Basile:ANSIはWindows上の従来の8ビットエンコーディングを指します。テキストファイルはしばしばUnicodeではなく、そのエンコーディングに含まれているため、システム間で移植性が高くありません。言語やロケールの設定によって異なるため、特定のエンコーディングはありません。しかし、アメリカや西ヨーロッパのマシンでは、コードページ1252です。しかし、好きなものに設定することができます。 – Joey