Страница: 1 |
Страница: 1 |
Вопрос: Русский язык и .NET
Добавлено: 21.10.08 01:01
Автор вопроса: s12
Проблема вот в чем: читаю данные из текстового файла методом File.OpenRead() и вместо русских букв получаю букозябры. Это че, фича? Как от неё избавиться?
ЗЫ: Речь о VS2008 и простом текстовом файле в кодировке ANSI.
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
s12
Вопросов: 24
Ответов: 363
Профиль | | #1
Добавлено: 21.10.08 01:07
Сразу говорю - использовать StreamReader нельзя.
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 21.10.08 13:22
И с чем же связано такое ограничение??
Номер ответа: 3
Автор ответа:
s12
Вопросов: 24
Ответов: 363
Профиль | | #3
Добавлено: 21.10.08 16:05
С тараканами в голове у начальника .
И куском бинарного кода в документе, два раза перечитывать файл не эффективно. Я, конечно, понимаю что дотнет ориентирован на юникод, но классы для конвертации должны быть, в мсдн нет нифига на эту тему...
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 21.10.08 18:40
По умолчанию он в ASCII читает, а не в юникоде. Соответственно все
русские буквы режутся.
Начальника надо однако переучивать. Могу дать на пару дней паяльник.
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 21.10.08 20:20
Ну порадуй тогда своего начальника..
Номер ответа: 6
Автор ответа:
s12
Вопросов: 24
Ответов: 363
Профиль | | #6
Добавлено: 21.10.08 23:51
ВОООТ ОНО!!! Да сразу на шарпе!!! Большой респект!!!
Номер ответа: 7
Автор ответа:
Фенягz
ICQ: 387437448
Вопросов: 7
Ответов: 202
Web-сайт:
Профиль | | #7
Добавлено: 22.10.08 15:45
Странно... У меня с VB 2005 всё было Ок. При чтении из TXT и вывода в TextBox русские буквы были. И при сохранении из TextBox в TXT тоже. С 2008 тоже всё было Ок...
Номер ответа: 8
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #8
Добавлено: 22.10.08 18:16
Ничего странного.. у тебя файл был в UTF-8.. Там с русским текстом все ок(эта кодировка дефолтовая для VS). А ты попробуй создать файл в блокноте и сохрани его в ANSI, а потом попытайся прочитать и увидишь что будет с русским текстом.
Номер ответа: 9
Автор ответа:
Фенягz
ICQ: 387437448
Вопросов: 7
Ответов: 202
Web-сайт:
Профиль | | #9
Добавлено: 22.10.08 22:01
Нет. У меня всё было Ок с ANSI, a c Unikode были закорючки.
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 28.10.08 01:16
Ентотр кот спасед РУССКЕХ демогратокоф!
Надеюсь не нужно объяснять как работает и как это пользовать?
Номер ответа: 11
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #11
Добавлено: 28.10.08 01:22
Кстати ни Павел, ни EROS не правы в своих соображениях
По умолчанию StreamReader, если в нем не инициализировать Encoding, пытается сам определить кодировку, используя первые несколько байт.
Таким образом, он может определить UTF8 и Unicode.
То есть - если текст изначально был сохранен в UTF8/Unicode, то он его прочитает, если же там была какая-то другая кодировка, например тот же 1251, он это не сможет определить и будет читать как ANSI, или восточноевропейской (надо проверить) поэтому вместо русских буков будут неверные символы