Главная страница
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.063 c
8-1135496232
vitaliy14
2005-12-25 10:37
2006.06.04
Окнтуривание изображений


15-1147515404
Verg
2006-05-13 14:16
2006.06.04
Глубины INDY. Вывеска не соответствует.


15-1147291233
Victor_new
2006-05-11 00:00
2006.06.04
Wi-Fi


15-1147434041
oldman
2006-05-12 15:40
2006.06.04
Какой процесс работает? (задачка для новичков)


2-1147684032
Tempora
2006-05-15 13:07
2006.06.04
При обработке данных приложение как-бы замерзает