![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать в какой кодировке находиться файл.... [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, точность выше), считаешь для него аналогичную таблицу. И сравниваешь эти таблицы (эталонные и для файла), учитывая количество символов(я использовал их как делители для элементов таблицы). Для неправильных кодировок расхождение с эталоном будет разительное, для правильной - небольшое.