代码在保存时以不同方式处理 .txt 文件

Code Treats .txt File Differently When Saved

我有一个看起来像这样的输入 .txt 文件。

command1 param1
command2       param2
command3       param3
command4 param4

我试图减少多余的空格,所以我实现了下面的代码来删除它。

string[] output = File.ReadAllText(InputFilePath).Split('\n').Select(s => Regex.Replace(s, @"\s+", " ")).ToArray();

File.WriteAllLines(OutputFilePath, output);

如果我 运行 文件上的代码没有做任何事情,代码就不起作用。

但是,如果我手动进入输入文件并保存它而不做任何更改,然后再次 运行 代码,它工作正常。

我认为这是某种 UTF-16/8 问题,但我不确定如何解释它。我能做什么?

在这种特定情况下,存在“不可见的控制字符和未使用的代码点”。使用正则表达式删除这些字符解决了这个问题。

string[] output = File.ReadAllLines(InputFilePath).Select(s => Regex.Replace(s, @"\p{C}+", "")).ToArray();