使用 Streamreader 的输入不会在 StreamWriter 中提供相同的输出

本文关键字:输出 输入 Streamreader 使用 StreamWriter | 更新日期: 2023-09-27 18:33:26

我正在使用StreamReader读取一个文件,并使用StreamWriter将确切的行写入另一个文件。但是,我遇到的问题是,在生成的文件中,任何出现的字符"¦"都会转换为"?"。

这是初始化我的流的代码:

using (var readFile = new FileStream(path, FileMode.Open, FileAccess.Read))
{
    using (var writeFile = new FileStream(@"Modified'" +   Path.GetFileName(path), FileMode.Create, FileAccess.Write))
    {
        using (var sr = new StreamReader(readFile, new ASCIIEncoding()))
        {
            using (var sw = new StreamWriter(writeFile, new ASCIIEncoding()))
            {
                //Read line and write it to the writer
            }
        }
    }
}

这可能是流的问题,还是更可能是原始文件的问题?原始文件本身在多个文本编辑器中显示得很好,所以它似乎是正确的。

使用 Streamreader 的输入不会在 StreamWriter 中提供相同的输出

> ¦ 不是有效的 ASCII 字符,所以我假设原始文件不是 ASCII 编码的。 将编码类型更改为 UTF 可以解决此问题,但很难知道这是否对您的要求有效。

using (var sr = new StreamReader(readFile, new UTF8Encoding()))
{
    using (var sw = new StreamWriter(writeFile, new UTF8Encoding()))

请参阅 http://www.asciitable.com/fpr 有效的 ASCII 字符列表。

此问题通过使用 Encoding.Default 而不是 ASCIIEncoding 来修复。