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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2011, 21:56   #1
AndreyK
Подтвердите свой е-майл
 
Регистрация: 05.04.2010
Сообщений: 76
По умолчанию idHTTP.post и кодировка UTF-8

Здравствуйте!!! У меня проблема, которую не могу решить, заключается она вот в чём:

Мне нужно отправить PHP скрипту текст на кириллице но при получении вижу знаки вопроса вместо текста. Как сделать чтобы скрипт получал мой текст в UTF-8?

Вот мой код:

Код:
Var
DataOnServer: TIdMultiPartFormDataStream;
DataFromServer:String;

begin
DataOnServer := TIdMultiPartFormDataStream.Create;
//Memo1.Text – тут текст который нужно отправить.
DataOnServer.AddFormField ('message', Memo1.Text);
DataFromServer := ( Form1.EHTTP.Post ('http://prime/script.php' , DataOnServer));
End;

Последний раз редактировалось Stilet; 12.03.2011 в 08:13.
AndreyK вне форума Ответить с цитированием
Старый 12.03.2011, 02:09   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

обсуждалось много раз.
UTF8Decode
UTF8ToAnsi
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.03.2013, 14:27   #3
iwp_work
Новичок
Джуниор
 
Регистрация: 19.11.2010
Сообщений: 2
По умолчанию

Ищите ответы на нормальных буржуйских форумах, а не на наших, где кроме как троллить - ничего не умеют.

var
ds: TIdMultipartFormDataStream;
begin
ds := TIdMultipartFormDataStream.Create;
try
ds.AddFormField('test', UTF8Encode('äöüß'), 'utf-8').ContentTransfer := '8bit';
try
ShowMessage(HTTP.Post('http://localhost/test.php', ds));
except
end;
finally
FreeAndNil(ds);
end;
end;
iwp_work вне форума Ответить с цитированием
Старый 26.03.2013, 22:26   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Не всегда UTF8Encode и UTF8ToAnsi помогает перевести данные из этого кода, иногда пустые значения выдает, особенно когда в полученных данных присутствует не только кодировка UTF-8. Вот код с просторов интернета работает нормально.

Код:
const
Utf2WinTable : array [0..65, 0..1] of string = (
   (#208#144,#192), (#208#145,#193), (#208#146,#194),
   (#208#147,#195), (#208#148,#196), (#208#149,#197),
   (#208#129,#168), (#208#150,#198), (#208#151,#199),
   (#208#152,#200), (#208#153,#201), (#208#154,#202),
   (#208#155,#203), (#208#156,#204), (#208#157,#205),
   (#208#158,#206), (#208#159,#207), (#208#160,#208),
   (#208#161,#209), (#208#162,#210), (#208#163,#211),
   (#208#164,#212), (#208#165,#213), (#208#166,#214),
   (#208#167,#215), (#208#168,#216), (#208#169,#217),
   (#208#170,#218), (#208#171,#219), (#208#172,#220),
   (#208#173,#221), (#208#174,#222), (#208#175,#223),
   (#208#176,#224), (#208#177,#225), (#208#178,#226),
   (#208#179,#227), (#208#180,#228), (#208#181,#229),
   (#209#145,#184), (#208#182,#230), (#208#183,#231),
   (#208#184,#232), (#208#185,#233), (#208#186,#234),
   (#208#187,#235), (#208#188,#236), (#208#189,#237),
   (#208#190,#238), (#208#191,#239), (#209#128,#240),
   (#209#129,#241), (#209#130,#242), (#209#131,#243),
   (#209#132,#244), (#209#133,#245), (#209#134,#246),
   (#209#135,#247), (#209#136,#248), (#209#137,#249),
   (#209#138,#250), (#209#139,#251), (#209#140,#252),
   (#209#141,#253), (#209#142,#254), (#209#143,#255) );

function Utf8ToWin(s : string) : string;
 var i : integer;
   res  :string;
 begin
   res:=s;
   for I := 0 to 65 do
     if pos(Utf2WinTable[i,0],res)>0
       then res := StringReplace(res, Utf2WinTable[i,0], Utf2WinTable[i,1], [rfReplaceAll]);
   Result:=res;
 end;
Использовать Utf8ToWin(даннные с кодировкой);

Последний раз редактировалось Aliens_wolfs; 26.03.2013 в 22:48.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стандартная проблема - Кодировка Post в idHTTP Nub Работа с сетью в Delphi 0 26.11.2010 09:23
Кодировка по умалчанию UTF-8 Bockarevs HTML и CSS 7 11.11.2010 17:16
Кодировка utf-8 искажается, когда пропускаю через функцию artemhp PHP 2 10.11.2010 00:15
кодировка UTF-8 nimf Общие вопросы Delphi 4 18.01.2009 19:25
UTF-8 кодировка OrdJONY Общие вопросы Delphi 2 23.03.2008 16:56