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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 00:18   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Злость XE3. Отправить текст в CP2151 на сервер.

Доброго времени!

Уже 3й час бьюсь головой об стол, лб стены и об клаву(не буквально). И просто не понимаю, почему так сложно отправить из Delphi XE3 еб...ый текст в еб...ой CP2151 кодировке

Код:
                tsPOST.Add('rname=' + fMsgTitle); //ЭТО
                tsPOST.Add('rtext=' + fMsgText);  //И ЭТО
                HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
                HTTP.Request.AcceptLanguage := 'ru-RU,ru;q=0.9,en;q=0.8';
                HTTP.Request.AcceptCharSet := 'Windows-1251';
                HTTP.Request.CharSet := 'Windows-1251';
Что я уже попробовал:
UTF8Encode
UTF8Decode
UTF8ToAnsi
UTF8ToAnsi(UTF8Encode
UTF8ToAnsi(UTF8Decode
UTF8ToWideString
UTF8ToWideString(UTF8Encode
UTF8ToWideString(UTF8Decode

Класс TEncoding:
Код:
function Encode2CP2151(const aStr: string): string;
var
  B: TBytes;
begin
  B := BytesOf(aStr);
  TEncoding.Convert(TEncoding.UTF8, TEncoding.GetEncoding(1251), B);
  Result := StringOf(B);
end;
УВАЖАЕМЫЕ, скажите мне, как заставить XE3 послать еб..й текст в заеб...й меня CP2151 кодировке???!1
Человек_Борща вне форума Ответить с цитированием
Старый 15.12.2012, 00:22   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

function Encode2CP2151(const aStr: string): string;

Точно String? Не AnsiString?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.12.2012, 00:24   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

100% строка юникодная.

Никто не знает решения?

Последний раз редактировалось Stilet; 15.12.2012 в 15:10.
Человек_Борща вне форума Ответить с цитированием
Старый 15.12.2012, 15:09   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может стоит посылать Stream а не открытый текст?
Сам сталкивался с подобным, но писал именно сервер а не клиента.
Тоже определил CharSet:='windows-1251'; сначала, но потом одумался, перешел на UTF и все страницы сайта перекодировал в UTF - сработало как полагается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.12.2012, 15:25   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Так сайт-то далеко не мой. И страницы там в CP1251.
Насчет передачи потока, хм.. TStringstream.. А чем он отличается от TStringList?
Человек_Борща вне форума Ответить с цитированием
Старый 15.12.2012, 16:10   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А чем он отличается от TStringList?
Если не ошибаюсь там кодирования нет. Инди его принудительно в юникоде не перадает в отличие от строк.
Цитата:
сайт-то далеко не мой. И страницы там в CP1251.
Соболезную

P.S. Да, еще один момент: в JS я часто использую encodeURIcomponent для конвертации строки в... не помню название точно.
В Делфи тоже кажись есть компонент, переводящий в URL для мультиязычных порталов - воспользуйся им для конвертации.

Вот что я имею ввиду: http://yandex.ua/yandsearch?text=Del...ld=ua&lr=20554
I'm learning to live...

Последний раз редактировалось Stilet; 15.12.2012 в 16:31.
Stilet вне форума Ответить с цитированием
Старый 15.12.2012, 17:16   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Все оказалось проще.
Код:
sHTML := HTTP.Post(cMailSendURL,tsPOST,TEncoding.GetEncoding(1251));
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправить POST-запрос на сервер sarmat84 Работа с сетью в Delphi 4 21.08.2012 10:44
Отправить файл на сервер Хоттабич C/C++ Сетевое программирование 4 03.03.2012 17:07
[WinAPI] Как отправить файл на сервер? Ёжик в тумане Win Api 4 11.01.2012 01:10
Не получается отправить сообщение на сервер zver777 Работа с сетью в Delphi 8 26.10.2009 22:42
Отправить файлы на сервер Narod.ru GAGARIN-NEW Работа с сетью в Delphi 7 06.07.2008 22:05