Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C# - чтение русского текста из файла

2.9K
01 июня 2005 года
pushkin
43 / / 13.09.2004
Начал недавно изучать C# и столкнулся с маленькой проблемой.Во время чтения файла с русскими буквами программа использует вообще непонятную кодировку. Когда я пытаюсь записать данные обратно в файл - там белиберда.
Вот мой кусок кода:

// Читаем файл целиком в память
StringBuilder sb = new StringBuilder();
using (StreamReader sr = File.OpenText("somefile.txt"))
{
// Читаем весь файл целиком в буфер
char[] buf = new char[1024];

int chars_read; // Количество прочитанных символов

while ( (chars_read = sr.ReadBlock(buf, 0, 1024)) != 0)
sb.Append(buf, 0, chars_read);
}

// Выводим прочитанное в консоль
Console.Write(sb);

Если сохранить вывод программы в файл, то все что написано английскими буквами читается нормально, а для русских букв невозможно подобрать кодировку.
10
01 июня 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by pushkin
Если сохранить вывод программы в файл, то все что написано английскими буквами читается нормально, а для русских букв невозможно подобрать кодировку.


Гы. Не надо забывать, что в .NET символы и строки в Unicode.

2.9K
01 июня 2005 года
pushkin
43 / / 13.09.2004
Цитата:
Originally posted by Freeman
Гы. Не надо забывать, что в .NET символы и строки в Unicode.


Дык читает же он текстовый файл в обычной, не двухбайтовой кодировке и запоминает все в строках Unicode, только перед запоминанием он их перекодирует с помощью UTF8Encoding. Как поменять это? Как заставить его перекодировать в другую кодировку? Или как просто написать кусок кода, который прочитает файл с русским текстом и выведет его в консоль правильно? (бинарные методы чтения файлов не предлагать) :)

319
02 июня 2005 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by pushkin
Дык читает же он текстовый файл в обычной, не двухбайтовой кодировке и запоминает все в строках Unicode, только перед запоминанием он их перекодирует с помощью UTF8Encoding. Как поменять это? Как заставить его перекодировать в другую кодировку? Или как просто написать кусок кода, который прочитает файл с русским текстом и выведет его в консоль правильно? (бинарные методы чтения файлов не предлагать) :)


пользуйся свойствами класса Encoding:

 
Код:
Encoding enc=Encoding.GetEncoding(1251);
rs=new StreamReader(ns,enc);
2.9K
02 июня 2005 года
pushkin
43 / / 13.09.2004
Цитата:
Originally posted by xelos
пользуйся свойствами класса Encoding:
 
Код:
Encoding enc=Encoding.GetEncoding(1251);
rs=new StreamReader(ns,enc);



Спасибо большое! Блин, как это я сам не заметил, что в конструкторе StreamReader'a есть еще параметры, кроме имени файла? :))) - все завелось и прекрасно работает

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог