Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить кодировку строчки [D7, 95/98, XP]


abhtr ©   (2008-12-17 16:00:00) 

Приходит текстовый файл с закодированным текстом.
Шапка этого файла содержит обычный текст, но с разной кодировкой.
Иногда 866, иногда win1251
Как можно определить кодировку этой строки, чтобы представлять ее в любом случае читабельной?
Пробовал KodSimbol := GetOEMCP;
но получается всегда 866
А если просматриваю Far-om, то получается видеть этот текст обычным переключением по F8


Правильный$Вася   (2008-12-17 18:03:00) [1]


> если просматриваю Far-om

у него есть частотные списки кодов для текстов на разных языках/кодировках
поэтому часто угадывает
тут смотри "C:\Program Files\Far\Addons\Tables\Russian"


Anatoly Podgoretsky   (2008-12-17 17:20:00) [2]

Если есть коды в диапазоне 128-191 то 866


Медвежонок Пятачок   (2008-12-17 17:13:00) [3]

Шапка этого файла содержит обычный текст, но с разной кодировкой.

Тупо Pos()

Если не совпало, значит в oem


clickmaker   (2008-12-17 16:05:00) [4]

> Как можно определить кодировку этой строки

если интересует именно автоопределение, то анализом некоторой части текста. Чем больше кусок, тем точнее.

например, так
function IsOem(pbBuff: PByteArray; cb: integer): boolean;
const
 Codes: array[0..9] of byte = (166, 161, 174, 175, 169, 176, 178, 179, 172, 164);
var
 i, j: integer;
begin
 for i := 0 to cb - 1 do
 begin
   if (pbBuff[i] = 0) then break;
   for j := 0 to 9 do
   begin
     if (pbBuff[i] = Codes[j]) then
     begin
       Result := true;
       exit;
     end;
   end;
 end;
Result := false;
end;

Преобразовать - OemToChar


Сергей М.   (2008-12-17 16:04:00) [5]


> если просматриваю Far-om, то получается видеть этот текст
> обычным переключением по F8


При этом работает "определялка", зашитая в твоей голове - если, мол, я вижу крякозябры, дай-ка я попробую жмакнуть F8, авось увижу желаемое.


> Шапка этого файла


Что есть "шапка файла" ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо