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 的选项。我在这里缺少什么?
使用 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 将处理那个。