我是否遗漏了某些东西,或者System.IO.FileStream没有读取包含希伯来语的Unicode文本文件?
public TextReader CSVReader(Stream s, Encoding enc)
{
this.stream = s;
if (!s.CanRead)
{
throw new CSVReaderException("Could not read the given CSV stream!");
}
reader = (enc != null) ? new StreamReader(s, enc) : new StreamReader(s);
}
由于 乔纳森
答案 0 :(得分:5)
FileStream只是一个字节流,它与语言/字符集无关。您需要一种编码来将字节转换为字符(包括希伯来语)并返回。
有几个课程可以帮助您,最重要的是System.Text.Encoding
和System.IO.StreamReader
以及System.IO.StreamWriter
。
答案 1 :(得分:2)
可能会关闭该流。
来自CanRead
上的msdn:
如果派生自Stream的类 不支持阅读,打电话给 Read,ReadByte和BeginRead方法 抛出NotSupportedException。
如果流已关闭,则此属性 返回false。
答案 2 :(得分:0)
我打赌你只是没有使用正确的编码。如果您实际上应该将Encoding.Default
(最常见)或Encoding.ASCII
传递给该方法,则可能会传递Encoding.UTF8
或Encoding.Unicode
。
如果您确定使用的是正确的编码,请发布完整代码和文件示例。