Здравствуйте! Подскажите как определить, что текстовый файл в кодировке UTF8 или cp1251, если в нём нет BOM?
может есть функции в free-паскале ?
Модератор: Модераторы
AlexEr81 писал(а):мне нужно прочитать конфигурационный текстовый файл, и если он в кодировке cp1251 то преобразовать текст в UTF8
Лекс Айрин писал(а):vitaly_l, в том то и проблема, что пока не определена кодировка нельзя сказать сколько места занимает символ.
procedure TForm1.Button1Click(Sender: TObject);
var str:string;
begin
str := 'йапона мать!';
if pos('а',str) = 3 then str := 'imUTF8' else str := 'imCp1251' ;
ShowMessage(str+' '+IntToStr(pos('а',str)));
end;
Лекс Айрин писал(а):А ты точно уверен, что размеры и положение в таблице символов конкретного тестового символа не совпадут для обеих проверяемых кодировок?
Лекс Айрин писал(а):попробуй. Только не забывай
procedure TForm1.Button1Click(Sender: TObject);
var str:string;
begin
str := Utf8ToWinCp('йапона мать!');
//str := 'йапона мать!';
if pos('а',str) = 3 then str := 'imUTF8' else str := 'imCp1251' ;
ShowMessage(str+' '+IntToStr(pos('а',str)));
end;
vitaly_l писал(а):Русский символ: "а", в utf8 занимает - два символа, а в Cp1251 - один.
Лекс Айрин писал(а):Это играет роль только если заранее известна кодировка.
vitaly_l писал(а):Получается, если кодировка конкретно Лексу и Айрину - заранее не известна, то буква "а" может занять любое кол-во символов в pos ?
vitaly_l писал(а): Это что-то типа, Корпускулярно-волнового дуализма
Сейчас этот форум просматривают: Google Adsense [Bot] и гости: 34