Как читать текст на иврите, используя System.IO.FileStream? - PullRequest
2 голосов
/ 23 марта 2010

Я что-то упустил или 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);
    }

Спасибо Jonathan

Ответы [ 3 ]

5 голосов
/ 23 марта 2010

FileStream - не что иное, как поток байтов, который не зависит от языка / кодировки. Вам нужна кодировка для преобразования байтов в символы (включая иврит) и обратно.

В этом вам помогут несколько классов, наиболее важными из которых являются System.Text.Encoding и System.IO.StreamReader и System.IO.StreamWriter.

2 голосов
/ 23 марта 2010

Поток может быть закрыт.

С MSDN на CanRead:

Если класс, производный от Stream, делает не поддерживает чтение, звонки на Методы Read, ReadByte и BeginRead бросить NotSupportedException.

Если поток закрыт, это свойство возвращает false.

0 голосов
/ 23 марта 2010

Держу пари, что вы просто не используете правильную кодировку. Скорее всего, вы передаете Encoding.Default или Encoding.ASCII, когда вам действительно нужно передать Encoding.UTF8 (наиболее распространенный) или Encoding.Unicode этому методу.

Если вы уверены, что используете правильную кодировку, опубликуйте полный код и пример файла.

...