| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Как определить кодировку текстового файла... |
| Автор: RUVATA 31.1.2011, 15:27 | ||
| Всем доброго времени суток... Суть проблемы... есть текстовый файл в который был перенаправленный вывод утилиты командной строки... кодировка получается у нас DOS-866 (если не ошибаюсь) Задача: считать содержимое, в переменную, перегнать кодировку в Unicode Вопросов назрела целая куча: Во первых - в среде .NET а именно на в vb.NET, есть ли классы которые помогут разобраться с кодировкой файла а именно ее узнать... в Java например есть функция которая определяет кодировку целевого файла на основе его метки порядка байтов, а в .NET поиск по справке привел меня к EncodingHelper.GetEncoding - метод Visual Studio 2010 Пространство имен: Microsoft.VisualStudio.TextTemplating Сборка: Microsoft.VisualStudio.TextTemplating.10.0 (в Microsoft.VisualStudio.TextTemplating.10.0.dll) Но у мя все равно ничего не вышло, я ели ели сборук таку нашел и к проекту притянул за уши, тау и в последствии Visual Studio 2010 кажет "что нет там таких классов" Во вторых - хер с ним с определением, пускай мы знаем наперед кодировку... таки и как ее конвертить вот таку функцию накидал, а ничерта она не конвертит... хотя че-т меняется но по сути мы просто получили ? взамен кирилических символов в DOS-866
я ей на вход StreamReader.ReadToEnd из файлика... подсосвывал. |
| Автор: cream 31.1.2011, 17:29 | ||||
RUVATA, вместо этого:
попробуйте это:
|
| Автор: jonie 31.1.2011, 22:58 |
| win1251-koi8-866 на основе статистики http://www.delphisources.ru/pages/faq/base/autodetect_text_coding.html многбайтовые на основе BOM-а (считайте первые три байта да и сравните руками)... |
| Автор: RUVATA 1.2.2011, 08:24 | ||||
А я в итоге понял одну тонкость... тут ведь как устроенно - StreamReader по умолчанию читает в Unicode, чтобы адекватно манипулировать кодировками, необходимо явно ее указать еще на этапе считывания/инициализации экземпляра StreamReader, например чтобы зачитать некий test.txt (DOS 866) необходим вот такой конструктор экз.
В таком случае моя функция
отрабатывает, отлично ... да и для нормального вывода кириллических символов полученного теста во всякие Label, TextBox, GirdView перекодировка в Unicode не понадобится. вот так... |
| Автор: RUVATA 1.2.2011, 15:41 | ||
Всем спасибо... |
| Автор: cream 1.2.2011, 19:41 |
Немного не так. StreamReader читает UTF8, пропет System.Text.Encoding.Unicode - это UTF16 LE. |