Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.02;
Скачать: CL | DM;

Вниз

Программное определение 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
3-2444
vitnt2000
2002-04-10 14:26
2002.05.02
Подключение к InterBase без драйверов


14-2645
Donal_Graeme
2002-03-19 11:11
2002.05.02
программа для записи CD-R


3-2500
Zak
2002-04-08 09:56
2002.05.02
Мастер-детаиЛ чтоб её!


6-2638
cypher
2002-02-19 00:49
2002.05.02
HOST - IP


1-2576
MVova
2002-04-19 14:21
2002.05.02
COM + Служба