0

我有几行包含以下特殊字符:

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

但是,当我将这些行写入文本文件时,结果如下:

CFACommunaut.Financi.reAfricaineBEACFranc CFACommunaut.Financi.reAfricaineBCEAOFranc

这就是我写这些行的方式:

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

我还File.WriteAllLines()通过传递一个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。

你有三个选择:

  1. 确定记事本是愚蠢的并忽略该问题。更好的编辑器会识别 UTF-8。
  2. 添加物料清单。用作var utf8WithBom = new Utf8Encoding(true, true)第二个参数。
  3. 使用旧版编码。指定Encoding.Default为第二个参数。

    生成的文件将损坏当前代码页中不存在的字符。它不会在某些其他国家/地区使用的系统上正确显示。

    IMO 这是一个坏主意,但为了完整起见,我仍然提到它。

于 2014-05-25T17:35:30.863 回答