Pregunta

Utilizamos un servicio web que espera UTF-8. El marco que utilizamos en el cliente es Apache Axis2. Llamamos al servicio web y el cuerpo SOAP contiene cadenas en UTF-8. El problema es que parece que el cuerpo es "doble codificada". Es decir tenemos el carácter 'A'. La representación UTF-8 de 'A' en UTF-8 es C3 A5 sin embargo que vemos en nuestros registros de que la (doble) valor codificado enviado es C3 83 C2 A5.

¿Alguien ha experimentado problemas parecidos?

¿Fue útil?

Solución

No está del todo claro cómo se está llamando al servicio web. ¿El método en el servicio web acaba de tomar una cadena? Si es así, ¿cómo se ve su cadena como en Java? Todas las cadenas en Java son UTF-16 codificada - si va a convertir la representación binaria UTF-8 en una cadena mediante la adopción de cada byte y convertirlo en un personaje, entonces ese es el problema

.

Si se pudiera mostrar lo que el método que está llamando parece, y cómo se está llamando a ella, que sería una gran ayuda.

Por lo que vale, he utilizado eje con cadenas que no son ASCII sin ningún problema en el pasado. Tengo la firme sospecha que esto es un problema con la forma en que se está usando en lugar de con el propio eje, aunque estoy dispuesto a estar equivocado:)

EDIT: Basado en su comentario, parece que tienes problemas para recibir los datos del formulario HTML, antes de chocar con el servicio web. Si el usuario ha escrito "a" en la forma, entonces eso es lo que debería ver cuando se depura en Eclipse. Si usted está poniendo los datos erróneos en su servicio web, no es de extrañar que está recibiendo datos erróneos a cabo en el otro extremo. Sugiero ejecutar WireShark para ver exactamente lo que el navegador que está enviando, tanto en términos de los bytes primas y también qué codificación de contenido se especifica. Mi conjetura es que su servidor web está tratando como ISO-8859-1 pero en realidad es UTF-8.

Una vez que tenga la cadena correctamente de la forma, sospecho encontrará que no hay problemas en absoluto en pasarlo al servicio web.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top