Mam problem, nie wiem jak rozwiązać.Delphi indy10 serwer http i formularz ExtJS złożyć
Mam serwer HTTP Indy10. Używałem zarówno serwerów HTTP Indy9, jak i Indy10 w wielu aplikacjach i nigdy nie miałem żadnych problemów. Ale teraz używam serwera HTTP Indy10 z frameworkiem javascript RAI ExtJS.
Problem polega na tym, że przesyłam dane zawierające znaki inne niż ansi. Na przykład, gdy przesyłam list "č", który jest listem w 1250 stronie kodowej (słoweński, chorwacki ...), otrzymuję następujące w Indy w "niezapisane parametry" -> "% C4% 8D". Jest to poprawna szesnastkowa reprezentacja litery "č" w kodowaniu utf-8. Wszystkie moje strony są utf-8 i nigdy nie miałem problemów z przesłaniem danych formularzy do Indy. Debugowałem kod i zobaczyłem, że otrzymałem sekwencję takich bajtów: [37, 67, 52, 37, 56, 68]. Jest to reprezentacja bajtowa ciągu "% C4% 8D". Ale oczywiście Indy nie może zakodować tego poprawnie do UTF-16. Tak więc jako przykład. Rzeczywiste pole formularza:
FirstName=črt
wychodzi tak, gdy zgłosił:
FirstName=%C4%8Drt
nie wiem jak rozwiązać ten problem. Spojrzałem na fora ExtJS, ale nie ma na ten temat nic. Ktoś wie coś na temat tego rodzaju problemu?
EDIT:
Gdybym kodować JSON reklam params przylatują poprawnie. Próbowałem również URL dekodować parametry, ale wynik nie jest poprawny. Może coś przeoczyłem. Spojrzę na to jeszcze raz. I tak wydaje się, że koduje ExtJS URL params
EDIT2:
ok, odkryłem więcej. Porównałem rzeczywistą zawartość danych pocztowych. To jest tak:
Delphi 2006 (Indy10): FirstName=%C4%8D
Delphi 2010 (Indy10): FirstName=%C4%8D
W obu przypadkach niezaprogramowane parametry są identyczne. Mam ParseParams włączony i w BDS2006 są poprawnie przetwarzane, ale w 2010 roku nie są. To jest Indy10 w pakiecie z delphi. Czy w tej wersji występuje błąd lub czy robię coś nie tak?
Edit3:
Pobrałem najnowszą nightly build OD Indy10. Wciąż ten sam problem.
EDIT4:
jestem zmuszony przyjąć własną odpowiedź.
Możliwości dekodowania TIdHTTPServer, nawet w wersjach VSI systemu Ansi, mają znane problemy, które nie zostały jeszcze rozwiązane. –
Dzięki za informacje. Obawiałem się, że robię coś złego :) – Runner