在 C# 中读取时从不同的编码文件中删除 '?'

Remove '�' from different encoded file when reading in C#

我无法控制我们的一些客户保存文件的编码,当它是 ASCII 时,文件可能缺少字符,然后显示“�”。读取文件后如何删除这些字符'?'?

我正在阅读包含以下行的文件,但对于每一列,我想在 C# .NET 中用空格替换该字符。

   using (var parser = new TextFieldParser("", Encoding.UTF8))

看起来您可以 create a UTF-8 Encoding 使用自定义错误替换:

var encoding = Encoding.GetEncoding(
    "UTF-8",
    null,
    new DecoderReplacementFallback(string.Empty));

using (var parser = new TextFieldParser("", encoding)) {
    ⋮
}

不知道是否允许编码器回退null。如果没有,请将其替换为 new EncoderReplacementFallback(string.Empty)