Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум программистов _ Delphi - Сети _ Кодировки

Автор: Froex 4:02:2008, 14:02

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

Автор: sax_ol 4:02:2008, 14:19

Цитата(Froex @ 4:02:2008, 16:02 )
отображается иероглифами

Где?

Автор: Froex 4:02:2008, 14:25

Код
...
IdHTTP1.Get('http://www.aaaaaa.ru/index.html',response);
temp:=response.datastring;
memo.text:=temp;
...

в результате показываются вместо русских букв иероглифы типа Профиль

Автор: sax_ol 4:02:2008, 14:29

если данные идут в юникоде, то ищите юникодовое мемо, да и ваще

http://www.google.com/search?hl=en&q=delphi+unicode+controls

Автор: Froex 4:02:2008, 14:32

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

Автор: Froex 8:02:2008, 07:06

Ничего не понял из поиска. Сделал свои функции. Банально, конечно, но действует.

Код
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.

Русская версия Invision Power Board (http://www.nulled.ws)
© Invision Power Services (http://www.nulled.ws)