Tengo un problema que no sé cómo resolverlo.Servidor http Delphi indy10 y formulario ExtJS enviar
Tengo un servidor HTTP Indy10. He utilizado los servidores HTTP Indy9 e Indy10 en muchas aplicaciones y nunca tuve ningún problema. Pero ahora estoy usando el servidor HTTP Indy10 con el framework de JavaScript de ExtJS.
El problema es cuando envío datos que contienen caracteres no ansi. Por ejemplo, cuando presento la letra "č" que es una letra en la página de códigos 1250 (esloveno, croata ...) obtengo lo siguiente en Indy en "params sin analizar" -> "% C4% 8D". Esta es la representación hexadecimal correcta de la letra "č" en la codificación utf-8. Todas mis páginas son utf-8 y nunca tuve problemas para enviar datos de formulario a Indy. Depuré el código y vi que obtengo una secuencia de bytes como esta: [37, 67, 52, 37, 56, 68]. Esta es la representación de bytes de la cadena "% C4% 8D". Pero, por supuesto, Indy no puede codificar esto correctamente en UTF-16. Entonces como un ejemplo. El campo de formulario actual:
FirstName=črt
sale así cuando has votado:
FirstName=%C4%8Drt
no sé cómo resolver esto. Miré en los foros de ExtJS, pero no hay nada sobre este tema. ¿Alguien sabe algo sobre este tipo de problema?
EDITAR:
Si puedo codificar los parámetros de anuncio JSON que llegan correctamente. También intenté decodificar URL de los parámetros, pero el resultado no es correcto. Tal vez me perdí algo. Voy a ver esto de nuevo. Y sí, parece que ExtJS URL codifica los parametros
Edit2:
Ok, he descubierto más. Comparé el contenido real de los datos de la publicación. Es así:
Delphi 2006 (Indy10): FirstName=%C4%8D
Delphi 2010 (Indy10): FirstName=%C4%8D
En ambos casos, los parámetros no analizados son idénticos. Tengo ParseParams activado y en BDS2006 están correctamente analizados, pero en 2010 no lo son. Esto es Indy10 lleno de delphi. ¿Hay algún error en esta versión o estoy haciendo algo mal?
Edit3:
He descargado la última versión de todas las noches desde Indy10. Todavía el mismo problema.
EDIT4:
me veo obligado a aceptar mi propia respuesta.
Las capacidades de decodificación de TIdHTTPServer, incluso en versiones Ansi de VCL, tienen problemas conocidos que aún no se han solucionado. –
Gracias por la información. Estaba preocupado de estar haciendo algo mal :) – Runner