将所有行写入文本文件时保留特殊字符
本文关键字:文件 保留 特殊字符 文本 | 更新日期: 2023-09-27 18:05:07
我有几行包含特殊字符,如以下行:
CommunauteFinanciereAfricaineBEACFranc (XAF)CommunauteFinanciereAfricaineBCEAOFranc (XOF)
但是,当我将这些行写入文本文件时,得到的结果是:
CFACommunaut�Financi�reAfricaineBEACFrancCFACommunaut�Financi�reAfricaineBCEAOFranc
我是这样写的:
File.WriteAllLines(@"c:'file5.txt", lines);
我还通过传递一个Encoding
来尝试File.WriteAllLines()
的第三个参数。但这也无济于事。
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)中显示得很好,我在这个文件中读取了所有内容。
记事本不识别UTF-8,除非您添加BOM。
你有三个选择:
- 决定记事本是哑的,忽略这个问题。更好的编辑器会识别UTF-8。
- 添加BOM。使用
var utf8WithBom = new Utf8Encoding(true, true)
作为第二个参数。 -
使用遗留编码。指定
Encoding.Default
作为第二个参数。生成的文件将损坏当前代码页中不存在的字符。在某些其他国家使用的系统上不能正确显示。
在我看来,这是一个坏主意,但我仍然提到它的完整性。