8

入力ファイル(f)に、正しく読み取られていないUnicode(スウェーデン語)が含まれています。

これらのアプローチはどちらも機能しませんが、結果は異なります。

  LoadFromFile(f);

また

  LoadFromFile(f,TEncoding.GetEncoding(GetOEMCP));

DelphiXEを使用しています

UnicodeデータをLoadFromFileするにはどうすればよいですか?また、その後SaveToFileを実行するにはどうすればよいですか?ありがとう

4

2 に答える 2

12

Unicodeテキストファイルをロードするには、そのエンコーディングを知る必要があります。ファイルにバイトオーダーマーク(BOM)がある場合は、単に呼び出すだけLoadFromFile(FileName)で、RTLはBOMを使用してエンコーディングを決定します。

ファイルにBOMがない場合は、エンコーディングを明示的に指定する必要があります。

LoadFromFile(FileName, TEncoding.UTF8);
LoadFromFile(FileName, TEncoding.Unicode);//UTF-16 LE
LoadFromFile(FileName, TEncoding.BigEndianUnicode);//UTF-16 BE

何らかの理由で、私にはわかりませんが、UTF-32のサポートは組み込まれていませんが、そのようなファイルがある場合は、それTEncodingを処理するインスタンスを追加するのは簡単です。

于 2012-05-12T16:44:51.330 に答える
7

「Unicode」と言うときは「UTF-8」を意味すると思います。

ファイルがUTF-8であることがわかっている場合は、次のようにします。

LoadFromFile(f, TEncoding.UTF8).

保存する:

SaveToFile(f, TEncoding.UTF8);

GetOEMCPWinAPI関数は、古い255文字の文字セット用です。)

于 2012-05-12T16:08:33.393 に答える