Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 27.07.2011, 02:53   #1
temchik2004
 
Регистрация: 28.11.2010
Сообщений: 8
Репутация: 10
По умолчанию Проблема в кодировке сообщений ВКОНТАКТЕ

Пользуюсь vk api
Происходит отправка сообщений но человек получает знаки вопросов вместо русского текста
использую indy10 и delphi2010
Код:
procedure TForm4.Button2Click(Sender: TObject);
begin
Memo1.Text:=idhttp1.Get('https://api.vkontakte.ru/method/messages.send.xml?uid='+Form1.id+'&message='+mess.Text+'&access_token='+Form1.accesstoken);
end;
Пробовал и
Код:
procedure TForm4.Button2Click(Sender: TObject);
begin
Memo1.Text:=idhttp1.Get('https://api.vkontakte.ru/method/messages.send.xml?uid='+ansitoutf8(Form1.id)+'&message='+ansitoutf8(mess.Text)+'&access_token='+Form1.accesstoken);
end;
не помогает!
В чем может быть проблема?
temchik2004 вне форума   Ответить с цитированием
Старый 28.07.2011, 19:24   #2
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Адрес: Kirov
Сообщений: 245
Репутация: 28

icq: 567825628
По умолчанию

Попробуй переводить в кодировку из utf8 в ansi
Что то типа этого

Попробуй так

Код:
Memo1.Text:=Utf8ToAnsi(idhttp1.Get('https://api.vkontakte.ru/method/messages.send.xml?uid='+Form1.id+'&message='+mess.Text+'&access_token='+Form1.accesstoken));
или так

Код:
Memo1.Text:=AnsiToUtf8(idhttp1.Get('https://api.vkontakte.ru/method/messages.send.xml?uid='+Form1.id+'&message='+mess.Text+'&access_token='+Form1.accesstoken));

Последний раз редактировалось -=Virus=-; 28.07.2011 в 19:27.
-=Virus=- вне форума   Ответить с цитированием
Старый 31.07.2011, 00:10   #3
temchik2004
 
Регистрация: 28.11.2010
Сообщений: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от -=Virus=- Посмотреть сообщение
Попробуй переводить в кодировку из utf8 в ansi
Что то типа этого

Попробуй так

Код:
Memo1.Text:=Utf8ToAnsi(idhttp1.Get('https://api.vkontakte.ru/method/messages.send.xml?uid='+Form1.id+'&message='+mess.Text+'&access_token='+Form1.accesstoken));
или так

Код:
Memo1.Text:=AnsiToUtf8(idhttp1.Get('https://api.vkontakte.ru/method/messages.send.xml?uid='+Form1.id+'&message='+mess.Text+'&access_token='+Form1.accesstoken));
Не помогло!
temchik2004 вне форума   Ответить с цитированием
Старый 31.07.2011, 19:49   #4
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,840
Репутация: 6850
По умолчанию

Цитата:
но человек получает знаки вопросов вместо русского текста
использую indy10 и delphi2010
Тоже попался на подобном... Так и не понял таки как проблему решить. Юникодизация делфи не пошла на пользу.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 01.08.2011, 00:27   #5
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Адрес: Гродно
Сообщений: 305
Репутация: 173

icq: 2194756
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  mess: string;
begin
  mess := IdHTTP1.URL.ParamsEncode('Проверка', TEncoding.UTF8);
  s := 'https://api.vkontakte.ru/method/wall.post.xml?uid=&access_token=&message=' + mess;
  ShowMessage(IdHTTP1.Get(s));
end;
Сообщение приходит нормальное.
kangreon вне форума   Ответить с цитированием
Старый 01.08.2011, 19:26   #6
temchik2004
 
Регистрация: 28.11.2010
Сообщений: 8
Репутация: 10
По умолчанию

Код:
 
function UrlEncode(const s: AnsiString): string;
var
  I: integer;
begin
  Result := '';
  for i := 1 to Length(S) do
    case S[i] of
      '%', ' ', '&', '=', '@', '.', #13, #10, #128..#255: Result := Result + '%'
        + IntToHex(Ord(S[i]), 2);
    else
      Result := Result + S[i];
    end;
end;

idhttp1.Get('https://api.vkontakte.ru/method/messages.send.xml?uid='+form1.id+'&message='+URLEncode(ansitoutf8(mess.Text))+'&access_token='+Form1.accesstoken);
Решило проблему! Всем спасибо!

Последний раз редактировалось temchik2004; 01.08.2011 в 19:42.
temchik2004 вне форума   Ответить с цитированием
Старый 04.09.2013, 14:33   #7
GrabbeR
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 43
Репутация: 10
По умолчанию

Спасибо, помогло)
GrabbeR вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление Всех сообщений Вконтакте Zugelman JavaScript, Ajax 8 13.12.2010 02:31
Сообщения Вконтакте(проблема) viks1 Свободное общение 7 13.03.2010 16:51
Не грузится ВКонтакте(Странная проблема!!!) brandname Безопасность, Шифрование 8 20.12.2009 19:57
Отправка сообщений... вконтакте.ру... Delphi 7 Dionix Работа с сетью в Delphi 2 04.10.2009 12:34
Отправка сообщений вконтакте.ру mustang007 Работа с сетью в Delphi 3 28.06.2009 12:53


15:48.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.