(抱歉,这是骗子)

我花了很长时间尝试正确读取文本文件。

File.ReadAllText(path)开始并弄乱了字符之后,我尝试了File.ReadAlltext(path, Encoding)的几种变体,之后陷入困境,试图分析我的输入文件以找出问题出在哪个字节上,等等。

无奈之下,我尝试了File.ReadAllText(path, Encoding.Default),这有效!

我现在正在努力了解为什么默认值显然只有指定的默认值。

(我的压缩测试字符串是+4433ç,我将其保存为ANSI记事本中,尽管使用了瑞士法语区域设置...)

最佳答案

Encoding.Default是系统的ANSI代码页。

如果不指定编码,File.ReadAllText的作用是这样的:

  • 首先,它检查是否有字节顺序标记(UTF-8,UTF-16或UTF-32)。如果存在,它将使用字节顺序标记中指定的编码。
  • 否则,它将使用UTF-8。

  • 因此,获取系统ANSI代码页的唯一方法是显式指定Encoding.Default。

    10-08 15:37