Encoding enc=Encoding.GetEncoding(1251);
rs=new StreamReader(ns,enc);
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);
Если сохранить вывод программы в файл, то все что написано английскими буквами читается нормально, а для русских букв невозможно подобрать кодировку.
Цитата:
Originally posted by pushkin
Если сохранить вывод программы в файл, то все что написано английскими буквами читается нормально, а для русских букв невозможно подобрать кодировку.
Если сохранить вывод программы в файл, то все что написано английскими буквами читается нормально, а для русских букв невозможно подобрать кодировку.
Гы. Не надо забывать, что в .NET символы и строки в Unicode.
Цитата:
Originally posted by Freeman
Гы. Не надо забывать, что в .NET символы и строки в Unicode.
Гы. Не надо забывать, что в .NET символы и строки в Unicode.
Дык читает же он текстовый файл в обычной, не двухбайтовой кодировке и запоминает все в строках Unicode, только перед запоминанием он их перекодирует с помощью UTF8Encoding. Как поменять это? Как заставить его перекодировать в другую кодировку? Или как просто написать кусок кода, который прочитает файл с русским текстом и выведет его в консоль правильно? (бинарные методы чтения файлов не предлагать) :)
Цитата:
Originally posted by pushkin
Дык читает же он текстовый файл в обычной, не двухбайтовой кодировке и запоминает все в строках Unicode, только перед запоминанием он их перекодирует с помощью UTF8Encoding. Как поменять это? Как заставить его перекодировать в другую кодировку? Или как просто написать кусок кода, который прочитает файл с русским текстом и выведет его в консоль правильно? (бинарные методы чтения файлов не предлагать) :)
Дык читает же он текстовый файл в обычной, не двухбайтовой кодировке и запоминает все в строках Unicode, только перед запоминанием он их перекодирует с помощью UTF8Encoding. Как поменять это? Как заставить его перекодировать в другую кодировку? Или как просто написать кусок кода, который прочитает файл с русским текстом и выведет его в консоль правильно? (бинарные методы чтения файлов не предлагать) :)
пользуйся свойствами класса Encoding:
Код:
Цитата:
Originally posted by xelos
пользуйся свойствами класса Encoding:
пользуйся свойствами класса Encoding:
Код:
Encoding enc=Encoding.GetEncoding(1251);
rs=new StreamReader(ns,enc);
rs=new StreamReader(ns,enc);
Спасибо большое! Блин, как это я сам не заметил, что в конструкторе StreamReader'a есть еще параметры, кроме имени файла? :))) - все завелось и прекрасно работает