Проблема считывания русских букв из файла
От: sulik Россия http://nickpasko.blogspot.com
Дата: 04.02.03 10:01
Оценка:
Записываю в файл при помощи StreamWriter-а.
Читаю при помощи StreamReader-а.
Оба по умлочанию используют UTF-8
После записи в файле все данные корректны.
При чтении в результирующей строке вместо русских символов — пустота.
Из-за чего может возникнуть подобная проблема, и как ее можно решить?
Сознание определяет бытие!
Re: Проблема считывания русских букв из файла
От: Алексей Петров Россия  
Дата: 04.02.03 11:23
Оценка: 2 (1)
Здравствуйте, sulik, Вы писали:

S>Записываю в файл при помощи StreamWriter-а.

S>Читаю при помощи StreamReader-а.
S>Оба по умлочанию используют UTF-8
S>После записи в файле все данные корректны.
S>При чтении в результирующей строке вместо русских символов — пустота.
S>Из-за чего может возникнуть подобная проблема, и как ее можно решить?

Проблема в UTF-8.
Попробуй в параметр encoding конструктора StreamWriter и StreamReader-ов передавать Encoding.GetEncoding(1251) или Encoding.GetEncoding(866) в зависимиости от Win / DOS кодировки файла.
Re[2]: Проблема считывания русских букв из файла
От: sulik Россия http://nickpasko.blogspot.com
Дата: 04.02.03 13:22
Оценка:
Здравствуйте, Алексей Петров, Вы писали:

АП>Проблема в UTF-8.

АП>Попробуй в параметр encoding конструктора StreamWriter и StreamReader-ов передавать Encoding.GetEncoding(1251) или Encoding.GetEncoding(866) в зависимиости от Win / DOS кодировки файла.

Да, видимо так. Однако, мне нужно использовать универсальную кодировку для поддержки не только русского, но потенциально любого языка.
Помогло:
new StreamReader(FStream, System.Text.Encoding.Unicode)
Блин. Видимо, UTF-8 — просто более ранняя версия Unicode?
Сознание определяет бытие!
Re: Проблема считывания русских букв из файла
От: MaxMP Россия  
Дата: 04.02.03 17:12
Оценка:
Здравствуйте, sulik, Вы писали:

S>Записываю в файл при помощи StreamWriter-а.

S>Читаю при помощи StreamReader-а.
S>Оба по умлочанию используют UTF-8
S>После записи в файле все данные корректны.
S>При чтении в результирующей строке вместо русских символов — пустота.
S>Из-за чего может возникнуть подобная проблема, и как ее можно решить?

Такой проблемы c SR/SW нет — в простом примере все работает как должно (буквы есть).
Re: Проблема считывания русских букв из файла
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 04.02.03 17:17
Оценка:
Здравствуйте, sulik, Вы писали:

S>Из-за чего может возникнуть подобная проблема, и как ее можно решить?


При таком вопросе лучше всего показывать код, который приводит к такой ошибке. Т.к. проблема, скорее всего,
в самом коде.
... << RSDN@Home 1.0 beta 6 >>
Re[3]: Проблема считывания русских букв из файла
От: orangy Россия
Дата: 05.02.03 02:29
Оценка:
Здравствуйте, sulik, Вы писали:

S>Блин. Видимо, UTF-8 — просто более ранняя версия Unicode?

UTF-8 относится к Unicode примерно так же, как ZIP к текстовым файлам Т.е. UTF-8 это только способ хранения Unicode-символов. Принцип такой: все символы с кодом <128 записываются одним байтом, как он есть. Т.е. простой текстовый файл, в котором только символы базового набора является валидным файлов в UTF-8. Все остальные символы записываются большим количеством байт, в зависимости от их значения.
Почему я сказал про ZIP: часто выгодно аналогичным образом хранить просто целые числа, когда потенциальные диапазон большой, а вот реальные значения обычно маленькие. Говоря формально, это кодирование в 127-ричной системе исчисления, а старший бит означает наличие следующего (старшего) разряда.
... << RSDN@Home 1.0 beta 5 | Сейчас среда, 08:02, слушаю тишину >>
"Develop with pleasure!"
Re[4]: Проблема считывания русских букв из файла
От: sulik Россия http://nickpasko.blogspot.com
Дата: 05.02.03 05:22
Оценка:
Здравствуйте, orangy, Вы писали:

O>UTF-8 относится к Unicode примерно так же, как ZIP к текстовым файлам


Ясно.
Хотя я имел в виду System.Text.Encoding.Unicode как именно способ представления unicode — кодировки.
Сознание определяет бытие!
Re[2]: Проблема считывания русских букв из файла
От: sulik Россия http://nickpasko.blogspot.com
Дата: 05.02.03 05:44
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>При таком вопросе лучше всего показывать код, который приводит к такой ошибке. Т.к. проблема, скорее всего,

DG>в самом коде.

Возможно, хотя и маловероятно, полскольку изменение кодировки на System.Text.Encoding.Unicode решило проблему. Хотя, возможно, при использовании UTF-8 необходимо как-то по особому изощряться..
Сознание определяет бытие!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.