Форум: "Начинающим";
Текущий архив: 2009.02.01;
Скачать: [xml.tar.bz2];
ВнизКак определить кодировку строчки Найти похожие ветки
← →
abhtr (2008-12-17 16:00) [0]Приходит текстовый файл с закодированным текстом.
Шапка этого файла содержит обычный текст, но с разной кодировкой.
Иногда 866, иногда win1251
Как можно определить кодировку этой строки, чтобы представлять ее в любом случае читабельной?
Пробовал KodSimbol := GetOEMCP;
но получается всегда 866
А если просматриваю Far-om, то получается видеть этот текст обычным переключением по F8
← →
Сергей М. © (2008-12-17 16:04) [1]
> если просматриваю Far-om, то получается видеть этот текст
> обычным переключением по F8
При этом работает "определялка", зашитая в твоей голове - если, мол, я вижу крякозябры, дай-ка я попробую жмакнуть F8, авось увижу желаемое.
> Шапка этого файла
Что есть "шапка файла" ?
← →
clickmaker © (2008-12-17 16:05) [2]> Как можно определить кодировку этой строки
если интересует именно автоопределение, то анализом некоторой части текста. Чем больше кусок, тем точнее.
например, так
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 17:13) [3]Шапка этого файла содержит обычный текст, но с разной кодировкой.
Тупо Pos()
Если не совпало, значит в oem
← →
Anatoly Podgoretsky © (2008-12-17 17:20) [4]Если есть коды в диапазоне 128-191 то 866
← →
Правильный$Вася (2008-12-17 18:03) [5]
> если просматриваю Far-om
у него есть частотные списки кодов для текстов на разных языках/кодировках
поэтому часто угадывает
тут смотри "C:\Program Files\Far\Addons\Tables\Russian"
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.02.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c