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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2009, 23:25   #1
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию Знаки вопроса вместо русских букв

Посылаю запрос серверу через Post или Get (Indy). В ответе все русские буквы в виде знаков вопроса. Как можно исправить?
Voody вне форума Ответить с цитированием
Старый 22.06.2009, 23:45   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

нужно смотреть какая кодировка приходит(часто бывает utf8)
в Дельфи есть функция
Код:
function Utf8ToAnsi(const S: UTF8String): string;
ей и воспользуйтесь
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.06.2009, 00:16   #3
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
нужно смотреть какая кодировка приходит(часто бывает utf8)
в Дельфи есть функция
Код:
function Utf8ToAnsi(const S: UTF8String): string;
ей и воспользуйтесь
где узнать в какой кодировке приходит.
я увидел только такое:
Цитата:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
Utf8ToAnsi не помогло
Voody вне форума Ответить с цитированием
Старый 23.06.2009, 08:20   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

покажите код, какую версию среды,indy используете ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 23.06.2009, 17:48   #5
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Borland Delphi Pro Secon Edition 7.2
Indy 10-ая версия. Точнее не скажу, не знаю, где посмотреть. Но скачал по вашей инструкции (kvendi.pp.ru) буквально неделю назад.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdCookieManager, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    HTTP: TIdHTTP;
    CM: TIdCookieManager;
    Memo1: TMemo;  
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 var
  Http  : TidHttp;
  CM    : TidCookieManager;
  Data  : TStringList;
  StrPage  :  String;

begin
  try   //идет успешная авторизация
    Http := TIdHTTP.Create(Self);
    Data := TStringList.Create;
    CM := TidCookieManager.Create(Http);
    Http.AllowCookies := true;
    Http.CookieManager := CM;
    Http.HandleRedirects := true;

    Data.Add('vb_login_username=rankor');
    Data.Add('vb_login_password=qwerty');
    Data.Add('do=login');   
    StrPage := Http.post('http://www.сайт.tv/login.php?do=login', Data);
  
  finally
    Data.Free;   
  end;


  if (Pos('usercp.php',StrPage) <> 0) or (Pos('rankor',StrPage) <> 0) then
    ShowMessage('Авторизация прошла успешно')
  else
    ShowMessage('Авторизация провалилась');

  Memo1.Lines.Text := StrPage; //в Memo текст страницы записывается

end;

end.
вот в Memo я и вижу, что вместо русских букв знаки вопроса.
Попробовал Memo1.Lines.Text :=Utf8ToAnsi(StrPage); - никакой разницы.
Voody вне форума Ответить с цитированием
Старый 23.06.2009, 17:58   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

не используйе с последними версиями Indy в get запросах строковые типы. Используйте Tstream-ы
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 23.06.2009, 21:09   #7
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
не используйе с последними версиями Indy в get запросах строковые типы. Используйте Tstream-ы
Не совсем понял... Тут же не Get, а Post запрос. И при чем тут поток?
Можно примерчик вашего совета?
Voody вне форума Ответить с цитированием
Старый 23.06.2009, 21:36   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

примерно так:
Код:
var s:TStringStream;
data:TStringList;
begin
s:=TStringStream.Create;
data:=TStringList.Create;
try
  Data.Add('vb_login_username=rankor');
  Data.Add('vb_login_password=qwerty');
  Data.Add('do=login');
  IdHTTP1.Post('http://www.сайт.tv/login.php?do=login',data,s);
  s.position:=0;
  if (Pos('usercp.php',s.DataString) <> 0) or (Pos('rankor',s.DataString) <> 0) then
    ShowMessage('Авторизация прошла успешно')
  else
    ShowMessage('Авторизация провалилась');
  memo1.Lines.LoadFromStream(s);
finally
  s.Free;
  data.Free;
end;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 23.06.2009, 22:27   #9
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Спасибо, теперь русские буквы нормально
Voody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вместо русского знаки ? SwiP SQL, базы данных 5 06.04.2009 23:27
Корректное отображение русских букв. TheWanderer Общие вопросы C/C++ 2 17.11.2008 21:03
Ввод русских букв в Delphi Аццкий Нуп Помощь студентам 3 25.06.2008 23:27
Регистр для русских букв Kulibim Общие вопросы Delphi 2 28.10.2007 17:36
Подсчёт русских букв в строках файла гера Помощь студентам 1 25.04.2007 01:19