Ho un problema che non so come risolvere.Delphi server http indy10 e modulo ExtJS inviare
Possiedo un server HTTP Indy10. Ho usato entrambi i server HTTP Indy9 e Indy10 in molte applicazioni e non ho mai avuto problemi. Ma ora sto usando il server HTTP Indy10 con il framework RAI javascript di ExtJS.
Il problema si verifica quando invio dati che contengono caratteri non ansi. Per esempio quando invio la lettera "č" che è una lettera nel 1250 codepage (slovena, croata ...) ottengo il seguente in Indy sotto "parametri non analizzati" -> "% C4% 8D". Questa è la corretta rappresentazione esadecimale della lettera "č" nella codifica utf-8. Tutte le mie pagine sono utf-8 e non ho mai avuto problemi ad inviare i dati del modulo a Indy. Ho eseguito il debug del codice e ho visto che effettivamente ottengo una sequenza di byte come questa: [37, 67, 52, 37, 56, 68]. Questa è la rappresentazione in byte della stringa "% C4% 8D". Ma ovviamente Indy non può codificarlo correttamente in UTF-16. Quindi, ad esempio. Il campo di modulo attuale:
FirstName=črt
viene fuori come questo quando submited:
FirstName=%C4%8Drt
non so come risolvere questo. Ho guardato i forum di ExtJS, ma non c'è nulla su questo argomento. Qualcuno sa qualcosa su questo tipo di problema?
EDIT:
Se ho codificare params annuncio JSON arrivano in modo corretto. Ho anche provato a decodificare l'URL dei parametri, ma il risultato non è corretto. Forse mi sono perso qualcosa. Lo guarderò di nuovo. E sì, sembra che ExtJS URL codifica i params
EDIT2:
Ok, ho scoperto di più. Ho confrontato il contenuto effettivo dei dati del post. È così:
Delphi 2006 (Indy10): FirstName=%C4%8D
Delphi 2010 (Indy10): FirstName=%C4%8D
In entrambi i casi i parametri non analizzati sono identici. Ho attivato ParseParams e nel BDS2006 sono stati analizzati correttamente, ma non nel 2010. Questo è Indy10 gonfiato con delphi. C'è un bug in questa versione o sto facendo qualcosa di sbagliato?
Edit3:
ho scaricato l'ultima nightly build od Indy10. Ancora lo stesso problema.
edit4:
sono costretto ad accettare la mia risposta personale.
Le capacità di decodifica di TIdHTTPServer, anche nelle versioni Ansi della VCL, hanno problemi noti che non sono ancora stati risolti. –
Grazie per le informazioni. Ero preoccupato che stavo facendo qualcosa di sbagliato :) – Runner