Форум: "Основная";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
ВнизПрограммное определение DOS/Windows кодировки текстового файла! Найти похожие ветки
← →
Tolstomordik (2002-04-18 15:36) [0]Привет, мастера!!! Я скармливаю своей программе текстовик, который она распихивает по .DB таблицам. Часть текстовиков приходит в норамльной кодировке, а часть - кракозябрами. Как программно определить кодировку???
ЗЫ. По умолчанию я все строки преобразовываю следующей процедурой:
procedure Convert(Stroka: String);
var
Data: Byte;
len: Integer;
I: Integer;
begin
Len:=Length(Stroka);
i:=1;
repeat
data:=ord(Stroka[i]);
IF (Data > 127) and (Data < 176) then Data:=Data + 64
else IF (Data > 223) and (Data < 240) then Data:=Data + 16;
Stroka[i]:=chr(data);
I:=I+1;
until(I = len+1);
Str_Out:=Stroka
Str_Out:="";
← →
arbiter (2002-04-18 18:28) [1]Стат. анализ.
Если кодировок мало, то можно простой по частоте появления символов.
Если кодировок входящих много, можно попробовать анализ N-грамм.
← →
Slava (2002-04-19 06:48) [2]> Tolstomordik
Если просто определить WIN или DOS, то я делал так:
1. Считаем средний код символов, входящих в строку (нужны только те, которые больше #127, остальные не учитываем)
2. Сравниваем полученное число с неким "эталоном".
Если полученное среднее значение меньше "эталона", то это - DOS, иначе - WIN
Экпериментально "эталон" был подобран, равный 200.
За 2,5 года только один раз было неправильное распознавание. Но там была почти одна псевдографика.
← →
Alx2 (2002-04-19 07:54) [3]Если только есть либо DOS 866 либо Win 1251:
В DOS кодировке таблица русских маленьких букв имеет разрыв в районе буквы "р". В Win - идут сплошняком.
← →
Кулюкин Олег (2002-04-19 08:59) [4]Я находил код символа, который встречался в тексте максимальное количество раз, и того что оказывался на втором месте.
Самые "частые" буквы в русском языке - "Е" и ... не помню уже, кажется "о".
Потом смотрел какой кодировке они соответствуют.
Достаточно надежно.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c