Главная страница
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.045 c
2-1148039229
kitti
2006-05-19 15:47
2006.06.04
Microsoft SQL Server


15-1146663216
ANB
2006-05-03 17:33
2006.06.04
Где взять сборник сестер Бери ?


2-1148070813
Mr tray
2006-05-20 00:33
2006.06.04
VkKeyScan работает только для латинских символов


2-1148018581
elfebet
2006-05-19 10:03
2006.06.04
Как програмно перевернуть экран?


15-1146822724
Petr V. Abramov
2006-05-05 13:52
2006.06.04
Где узнать