У меня проблема, я не знаю, как ее решить.Delphi indy10 http server and ExtJS form submit
У меня есть HTTP-сервер Indy10. Я использовал HTTP-серверы Indy9 и Indy10 во многих приложениях и никогда не испытывал никаких проблем. Но теперь я использую HTTP-сервер Indy10 с инфраструктурой RAI ExtJS javascript.
Проблема заключается в том, когда я отправляю данные, содержащие символы, отличные от ansi. Например, когда я отправляю письмо «č», которое является письмом в кодировке 1250 (словенский, хорватский ...), я получаю следующее в Indy в разделе «unparsed params» -> «% C4% 8D». Это правильное шестнадцатеричное представление буквы «č» в кодировке utf-8. Все мои страницы - utf-8, и у меня никогда не было проблем с отправкой данных формы в Indy. Я отлаживал код и видел, что на самом деле я получаю последовательность байтов: [37, 67, 52, 37, 56, 68]. Это байтовое представление строки «% C4% 8D». Но, конечно, Indy не может корректно кодировать UTF-16. Итак, пример. Действительное поле формы:
FirstName=črt
выходит как это, когда занесена:
FirstName=%C4%8Drt
Я не знаю, как решить эту проблему. Я смотрел на форумах ExtJS, но в этой теме ничего нет. Кто-нибудь знает что-нибудь об этой проблеме?
EDIT:
Если закодировать PARAMS объявление JSON они правильно приехать. Я также пытался URL-расшифровать параметры, но результат неверен. Может, я что-то пропустил. Я снова посмотрю на это. И да, кажется, что URL ExtJS кодирует PARAMS
EDIT2:
Ok, я обнаружил больше. Я сравнил фактическое содержание данных сообщения. Это выглядит так:
Delphi 2006 (Indy10): FirstName=%C4%8D
Delphi 2010 (Indy10): FirstName=%C4%8D
В обоих случаях непараметрированные параметры идентичны. У меня включен ParseParams, и в BDS2006 они правильно разобраны, но в 2010 году они не являются. Это Indy10, наполненный delphi. Есть ли ошибка в этой версии, или я делаю что-то неправильно?
EDIT3:
Я скачал последнюю ночную сборку од Indy10. Еще одна проблема.
EDIT4:
Я вынужден принять свой ответ.
Возможности декодирования TIdHTTPServer, даже в версиях VCL от Ansi, имеют известные проблемы, которые еще не были рассмотрены. –
Спасибо за информацию. Я волновался, что делаю что-то не так :) – Runner