Кодировки

  • Автор темы Froex
  • Дата начала
F

Froex

#1
Испольую метод IdHTTP.GET для принятия исходного кода страницы. Если принимается русский текст, то отображается иероглифами. Так и не понял, как это исправить.
 
F

Froex

#2
Код:
...
IdHTTP1.Get('http://www.aaaaaa.ru/index.html',response);
temp:=response.datastring;
memo.text:=temp;
...
в результате показываются вместо русских букв иероглифы типа ПÑ?офиль
 
F

Froex

#3
Сейчас посмотрю. Просто я думал, что дело в настройках IdHTTP
 
F

Froex

#4
Ничего не понял из поиска. Сделал свои функции. Банально, конечно, но действует.
Код:
unit Convert;

interface
function UTFToWin(Str: string): string;
function WinToUTF(Str: string): string;

implementation

const
UTF: array[1..66] of string = (
'Р°','Р±','РІ','Рі','Рґ','Рµ','С‘','Р¶','Р·','Рё',
'Р№','Рє','Р»','Рј','РЅ','Рѕ','Рї','С€','С�','С‚',
'Сƒ','С„','С…','С†','С‡','Сˆ','С‰','СŠ','С‹','СŒ',
'С�','СŽ','С�','Р�','Р‘','Р’','Р”','Р”','Р•','Р�',
'Р–','Р—','Р˜','Р™','Рš','Р›','Рœ','Р�','Рž','РŸ',
'Р ','РЎ','Рў','РЈ','Р¤','РҐ','Р¦','Р§','РЁ','Р©',
'РЄ','Р«','Р¬','Р­','Р®','РЇ');


Win: array[1..66] of string = (
'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и',
'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т',
'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь',
'э', 'ю', 'я', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё',
'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П',
'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ',
'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я');

function UTFToWin(Str: string): string;
var i,j:integer;
temp:string;
begin
temp:='';
i:=1;
while i<=length(str) do
begin
for j:=1 to 66 do
begin
if (str[i]+str[i+1])=UTF[j] then
begin
temp:=temp+Win[j];
i:=i+1;
break;
end
else if j=66 then temp:=temp+str[i];
end;
i:=i+1;
end;
UTFToWin:=temp;
end;

function WinToUTF(Str: string): string;
var i,j:integer;
temp:string;
begin
temp:='';
i:=1;
while i<=length(str) do
begin
for j:=1 to 66 do
begin
if str[i]=Win[j] then
begin
temp:=temp+UTF[j];
break;
end
else if j=66 then temp:=temp+str[i];
end;
i:=i+1;
end;
WinToUTF:=temp;
end;

end.