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

Вниз

Определение кодировки?   Найти похожие ветки 

 
pathfinder   (2006-05-16 16:34) [0]

Подскажите пожалуйста, как можно программно определить кодировку?


 
Сергей М. ©   (2006-05-16 16:39) [1]

Никак.


 
Desdechado ©   (2006-05-16 16:40) [2]

частотным анализом по характерным признакам для языков
но гарантий не будет, только вероятности


 
pathfinder   (2006-05-17 15:38) [3]

Вопрос на самом деле более узкий. Очень хотелось бы программно определять DOS кодировка или WIN.


 
Johnmen ©   (2006-05-17 15:45) [4]

// Sha_IsOem определяет кодировку текста по распределению строчных букв.
// Алгоритм использует то, что в тексте на русском языке буквы "а".."п"
// встречаются в 2.2-2.4 раза чаще букв "р".."я" (70% к 30%).
// Результат: Oem=1, неизвестно=0, Ansi=-1
function Sha_IsOem(sl: TStringList): integer; overload;
var
 i, ct, ch: integer;
 p, q: pchar;
begin;
 ct:=0;
 Result:=0;
 for i:=sl.Count-1 downto 0 do begin;
   p:=pointer(sl[i]);
   if p<>nil then begin;
     q:=p+pInteger(@p[-4])^;
     while p<q do begin;
       ch:=byte(p[0]);
       if chr(ch)>=chr(14*16) then inc(ct)       //Ansi "а".."я" или Oem "р".."я"
  else if byte(ch) and 160=160 then inc(Result); //Oem  "а".."п"
       ch:=byte(p[1]);
       if chr(ch)>=chr(14*16) then inc(ct)       //Ansi "а".."я" или Oem "р".."я"
  else if byte(ch) and 160=160 then inc(Result); //Oem  "а".."п"
       p:=p+2;
       end;
     end;
   end;
 ch:=(Result+ct) shr 2;     //Четверть общего количества строчных букв = 0.25 * Count
 Result:=Result-(ct shr 1); //Для Oem = 0.55 * Count, для Ansi = - 0.5 * Count
 //Если результат по абсолютной величине превосходит четверть общего
 //количества строчных букв, то считаем, что кодировка определена успешно.
 if (Result>=ch) or (Result<=-ch) then {ok} else Result:=0;
 end;


Copyright (c) Sha  ©  



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.058 c
2-1148115210
DesperadO666
2006-05-20 12:53
2006.06.04
DBComboBox или ComboBox что поможет?


15-1147261429
Photus
2006-05-10 15:43
2006.06.04
Борьба с экспортом в Borland Builder


2-1147787382
Mahab
2006-05-16 17:49
2006.06.04
thread


3-1144784361
{AleX}
2006-04-11 23:39
2006.06.04
Как правельно проводить аудентификацию пользователя?


15-1146945037
casandra
2006-05-06 23:50
2006.06.04
Что вы празднуете 9 мая?