0

次の行のような特殊文字を含む行がいくつかあります。

CommunautéFinancièreAfricaineBEACFranc(XAF) CommunautéFinancièreAfricaineBCEAOFranc(XOF)

しかし、これらの行をテキスト ファイルに書き込むと、結果として次のようになります。

CFACommunaut�Financi�reAfricaineBEACFranc CFACommunaut�Financi�reAfricaineBCEAOFranc

これは私が行を書く方法です:

File.WriteAllLines(@"c:\file5.txt", lines);

File.WriteAllLines()を渡しての 3 番目のパラメーターも試しましたEncoding。しかし、それも役に立ちませんでした。

File.WriteAllLines(@"c:\file5.txt", lines, Encoding.UTF8); File.WriteAllLines(@"c:\file5.txt", lines, Encoding.ASCII);

これは私がすべての行を読む方法です:

File.ReadAllLines(@"C:\file4.txt").ToList()
        .ForEach(g => 
            lines.Add(g.ToString()
            .Replace("/", string.Empty)
            .Replace("(", string.Empty)
            .Replace(")", string.Empty))
        );

クレイジーなことは、すべてを読み込んだ別のテキストファイル(file4.txt)で文字が完全に正常に表示されることです.

4

1 に答える 1

1

BOM を追加しない限り、メモ帳は UTF-8 を認識しません。

次の 3 つの選択肢があります。

  1. メモ帳はばかげていると判断し、問題を無視します。優れたエディターは UTF-8 を認識します。
  2. BOM を追加します。var utf8WithBom = new Utf8Encoding(true, true)2 番目の引数として使用します。
  3. 従来のエンコーディングを使用します。Encoding.Default第二引数に指定します。

    結果のファイルは、現在のコード ページに存在しない文字を破損します。一部の国で使用しているシステムでは正しく表示されません。

    IMOこれは悪い考えですが、完全を期すためにまだ言及しています。

于 2014-05-25T17:35:30.863 に答える