C# FileStream 读集编码

Flo*_*opn 1 c# encoding filestream

我在这里可能遗漏了一些明显的东西,但我似乎无法在我的 FileStream 读取中设置编码。这是代码:

FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
            using (fs)
            {

                byte[] buffer = new byte[chunk];
                fs.Seek(chunk, SeekOrigin.Begin);
                int bytesRead = fs.Read(buffer, 0, chunk);
                while (bytesRead > 0)
                {
                    ProcessChunk(buffer, bytesRead, database, id);
                    bytesRead = fs.Read(buffer, 0, chunk);
                }

            }
            fs.Close();
Run Code Online (Sandbox Code Playgroud)

ProcessChunk 将读取的值保存到对象,然后将其序列化为 XML,但读取的字符显示错误。编码需要是 1250。我还没有看到将编码添加到 FileStream 的选项。我在这里缺少什么?

Ric*_*imo 5

使用 StreamReader 而不是 FileStream。它有几个构造函数,允许您指定编码。例如:

StreamReader sr = new StreamReader(file, System.Text.Encoding.ASCII);
Run Code Online (Sandbox Code Playgroud)

由于您需要编码 1250,因此可以通过以下方式完成:

StreamReader sr = new StreamReader(file, System.Text.Encoding.GetEncoding(1250));
Run Code Online (Sandbox Code Playgroud)

我还建议将其写为:

using (StreamReader sr = new StreamReader ...etc)
Run Code Online (Sandbox Code Playgroud)

而不是在 using 之外声明变量;并且您不需要在 using 之外执行 Close,因为Dispose 将处理那个