Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать в какой кодировке находиться файл.... [Win95/98, WinME, NT4, Win2k, WinXP]


Anonimus ©   (2002-10-30 14:18:00) 

Драсти..!!!!

Подскажите пожалуйста как мне узнать в каой кодировки находиться файл..?????
Файл текстовый....

Заранее спасибо...


Opuhshii   (2002-10-30 14:43:00) [1]

100% - никак,..
с какой то вероятностью можно утверждать по наличию отсутствия не присущих кодировке символов,.. пример (win1251/cp866) в файле последеней не должно быть байту $FF,. хотя может и быть,.. ;)


Smithson   (2002-10-30 14:40:00) [2]

Очень просто. Я тут уже где-то давал алгоритм. Идея в следующем - для каждой кодировки составить таблицу ПАРсимволов. Взять некий большой файл, записать его в разных кодировках и посчитать такие таблицы для разных кодировок (плюс сохранить количество символов в файле всего).
структура типа

TCharSetTable = record
N: Integer; // число символов
CharSet: Array["а".."я","а".."я"] of Integer;
// Таблица пар
end;


Далее для своего файла считываешь байт 300-500 (я делал 500, точность выше), считаешь для него аналогичную таблицу. И сравниваешь эти таблицы (эталонные и для файла), учитывая количество символов(я использовал их как делители для элементов таблицы). Для неправильных кодировок расхождение с эталоном будет разительное, для правильной - небольшое.


Наверх

Титульная страница Поиск, карта сайта Написать письмо