Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2011, 18:29   #1
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию delphi 7 - utf8 to ansi

юзаю delphi 7. Мне нужно получить корректный html-код страницы. Когда кодировка страницы utf8, то получаю русские символы в utf8 (код страницы пробовал получать разными компонентами и способами, результат перекодировки всё тот же):
PHP код:
<head profile="http://gmpg.org/xfn/11">
<
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<
meta name="distribution" content="global" />
<
meta name="robots" content="follow, all" />
<
meta name="language" content="en, sv" />
<
title> &raquo; &#208;žÐ±Ñ€Ð°Ð±Ð¾Ñ‚ка Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð² Delphi Borland Delphi. . . Ð‘лог Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸ÑÑ‚ов</title> 
Перерыл кучу тем на форумах про перевод русс символов в норм вид из utf8, но ни чего не помогает.
промудохался с установкой rad studio delphi всех последующих версий, но на последнюю только дают триал, а на предыдущие или креки не правильно работают или у меня выдает ошибку при запуске "Item no found". Да и не хочется менять дельфю на другую.
utf8toansi - рус символы заменяются на "?"
некоторые примеры с типами данных из последующих версий дельфи, на которые ругается delphi 7 =(
Неужели в дельфи седьмой нельзя нормально utf8 в русс кодировку?
Pamparam вне форума Ответить с цитированием
Старый 13.10.2011, 18:56   #2
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

WIN-1251 не подойдет (UTF8Encode)?
kettanaito вне форума Ответить с цитированием
Старый 13.10.2011, 18:58   #3
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от kettanaito Посмотреть сообщение
WIN-1251 не подойдет?
дальше топика читали то?
Цитата:
utf8toansi - рус символы заменяются на "?"
Pamparam вне форума Ответить с цитированием
Старый 13.10.2011, 22:02   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

http://www.webdelphi.ru/2011/06/obno...a-delphi-4-xe/
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 13.10.2011, 22:14   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Неужели в дельфи седьмой нельзя нормально utf8 в русс кодировку?
Нормально utf8toansi в Д7 работает. XML в utf-8 спокойно раскодирует
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.10.2011, 22:27   #6
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

резалт работы тот же, что и при utf8toansi


Цитата:
Сообщение от Аватар Посмотреть сообщение
Нормально utf8toansi в Д7 работает. XML в utf-8 спокойно раскодирует
значит я сам себе это придумал?


Код:
unit Unit1q;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,wininet, StdCtrls, OleCtrls, SHDocVw;

type

TConvertChars = array [#128..#255] of char;
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


       function DownloadURL(const aUrl: string): Boolean; 
var 
hSession: HINTERNET; 
hService: HINTERNET; 
lpBuffer: array[0..1024 + 1] of Char; 
dwBytesRead: DWORD; 
begin
Result := False;
// hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
   if Assigned(hSession) then 
   begin
     hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0); 
     if Assigned(hService) then
       try 
         while True do 
         begin
           dwBytesRead := 1024; 
           InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
           if dwBytesRead = 0 then break; 
           lpBuffer[dwBytesRead] := #0;
           Form1.Memo1.Lines.Add(utf8toansi(lpBuffer));
         //  Form1.Memo2.Lines.Add(StringToWideChar(lpBuffer));
         end;
         Result := True;
       finally
         InternetCloseHandle(hService);
       end; 
   end; 
finally
   InternetCloseHandle(hSession); 
end; 
end;
procedure TForm1.Button1Click(Sender: TObject);
begin

DownloadURL('http://pblog.ru/?p=89');

end;



end.

Последний раз редактировалось Stilet; 14.10.2011 в 08:22.
Pamparam вне форума Ответить с цитированием
Старый 13.10.2011, 23:31   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
значит я сам себе это придумал?
А я и не говорю что вы это придумали. Думаю что в lpBuffer у вас данные не в этой кодировке. По поводу как это происходит не скажу, не работаю с InternetReadFile и прочим. А с функцией utf8toansi все в порядке

ADD

вот кусочек текста в UTF-8. Что-то он не очень похож на ваш текст в 1 посте

вное — н
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.10.2011 в 23:43.
Аватар вне форума Ответить с цитированием
Старый 13.10.2011, 23:59   #8
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А я и не говорю что вы это придумали. Думаю что в lpBuffer у вас данные не в этой кодировке. По поводу как это происходит не скажу, не работаю с InternetReadFile и прочим. А с функцией utf8toansi все в порядке
сопсно, не важно это internetreadfile или indy компоненты. И там и там результат одинаковый. Пробовал даже брать из webbrowser полученный текст и резалт тот же самый

Цитата:
Сообщение от Аватар Посмотреть сообщение
вот кусочек текста в UTF-8. Что-то он не очень похож на ваш текст в 1 посте

вное — н
на скрине показано какой текст получается. Это не utf8? Мой брауз так обработал этот текст из буфера обмена в textarea.
Pamparam вне форума Ответить с цитированием
Старый 14.10.2011, 00:08   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Edit1.Text:=Utf8ToAnsi('вное — н');

и получите: вное — н

Я просто выдернул кусочек из fb2-файла в UTF-8
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.10.2011, 00:35   #10
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Edit1.Text:=Utf8ToAnsi('вное — н');

и получите: вное — н

Я просто выдернул кусочек из fb2-файла в UTF-8
еще раз говорю: У МЕНЯ DELPHI 7
я не смогу это вставить, т.к. до 2009 версии поддержки юникода НЕТ
Pamparam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перекодировать файл в UTF-8->ANSI, ANSI -> UFT-8 Человек_Борща Общие вопросы Delphi 7 19.05.2011 18:47
Ansi коды в Delphi Nikita++ Помощь студентам 2 07.03.2011 23:31
Ansi в UTF-8 и наоборот UTF-8 в Ansi Alar Работа с сетью в Delphi 3 09.12.2010 17:02
перекодировка в dbgride из utf8 в Ansi supalk Общие вопросы Delphi 3 09.06.2010 20:16
спецсимволы utf8 sergsam1 HTML и CSS 25 29.01.2009 16:21