Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2010, 03:41   #11
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Стало самому интересно, как открыть файл, чтобы отображал текст в нормальной кодировке. Вот набросал класс, пока тестил и перебирал варианты. Надо бы, как-то узнавать кодировку тестового файла, а не просто подставлять Unicode. Пока не нашёл как.

Код:
    public static class FileList
    {
        public static String[] GetFiles(String path, String strPattern)
        {
            return Directory.GetFiles(path, strPattern);
        }

        public static String[] GetFiles(String path)
        {
           return  Directory.GetFiles(path);
        }

        public static String ReadTxtFile(String path)
        {
            return FileList.ReadTxtFile(path, Encoding.Unicode, Encoding.Default);
        }

        public static String ReadTxtFile(String path, Encoding encodingSource, Encoding encodingTarget)
        {
            using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                Byte[] bytes = new Byte[fs.Length];

                for (int i = 0; i < fs.Length; i++)
                    bytes[i] = (byte)fs.ReadByte();

                fs.Close();  //не совсем понятно, происходит ли закрытие файла, после return, так что закроем тут
                Byte[] bytesConverted = Encoding.Convert(encodingSource, encodingTarget, bytes);
                return encodingTarget.GetString(bytes);
            }
        }
    }

Последний раз редактировалось Casper-SC; 14.11.2010 в 06:12.
Casper-SC вне форума Ответить с цитированием
Старый 15.11.2010, 09:55   #12
killo
 
Регистрация: 14.11.2010
Сообщений: 4
По умолчанию

Открытие ansi файлов
Encoding encod_ENC = Encoding.GetEncoding(1251);
OpenFileDialog openF_OFD = new OpenFileDialog();
Nullable<bool> result_BOO = openF_OFD.ShowDialog();
if (result_BOO == true) { fname = openF_OFD.FileName; FILENAME = fname; }
string fText_STR = File.ReadAllText(fname,encod_ENC);
return fText_STR;
killo вне форума Ответить с цитированием
Старый 15.11.2010, 10:38   #13
killo
 
Регистрация: 14.11.2010
Сообщений: 4
По умолчанию

Цитата:
Стало самому интересно, как открыть файл, чтобы отображал текст в нормальной кодировке. Вот набросал класс, пока тестил и перебирал варианты. Надо бы, как-то узнавать кодировку тестового файла, а не просто подставлять Unicode. Пока не нашёл как.
После небольшого подкопа выяснилось, что в кодировке utf-8 перед блоком текста в байтах идут 3 специальных символа указывающих на принадлежность к этой кодировке 239 187 191 (ee bb bf)
В анси такого нед)

Проверить сие заключение можно выполнив простой код
byte[] bansi=File.ReadAllBytes("C:\\...som e_file_ansi.txt");
byte[] butf8 = File.ReadAllBytes("C:\\...some_file _utf8.txt");
И сравнив их вывод
killo вне форума Ответить с цитированием
Старый 15.11.2010, 11:57   #14
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
После небольшого подкопа выяснилось, что в кодировке utf-8 перед блоком текста в байтах идут 3 специальных символа указывающих на принадлежность к этой кодировке 239 187 191 (ee bb bf)
О чем собственно я говорил еще в 7м посте.
Цитата:
2. Откройте в hex-редакторе ваш текстовый файл, посмотрите первое слово (2 байта), обычно там хранится заголовок, описывающий какой именно формат/кодировка используется.
Но сие заключение было отвергнуто.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение в гриде одновременно на нескольких языках (например русский и польский) supalk Общие вопросы Delphi 5 24.10.2011 09:32
Delphi коды символов HTML в русский язык mega-X-mozg Помощь студентам 5 26.02.2010 16:56
где взять русский TB? или проблема с кодировкой seven123 Помощь студентам 4 19.12.2009 15:53
Проблема с русский текстом Shaman4eg Общие вопросы C/C++ 2 05.07.2009 13:40
Отображение символов в Delphi Airou Компоненты Delphi 1 18.04.2008 00:26