Question

Nous utilisons un service Web qui attend UTF-8. Le cadre que nous utilisons sur le client est Apache Axis2. Nous appelons le service Web et le corps de savon contient des chaînes en UTF-8. Le problème est qu'il semble que le corps est « double encodée ». I.e. nous avons le caractère « å ». La représentation utf-8 de « å » en revanche utf-8 est C3 A5 que nous voyons dans nos journaux que la valeur codée (double) est envoyé C3 83 C2 A5.

Quelqu'un at-il eu des problèmes similiar?

Était-ce utile?

La solution

Il est pas tout à fait clair comment vous appelez le service Web. Est-ce que la méthode du service Web prend juste une chaîne? Si oui, qu'est-ce que votre chaîne ressemble en Java? Toutes les chaînes en Java sont UTF-16 encodée - si vous convertissez la représentation binaire UTF-8 dans une chaîne en prenant chaque octet et de le transformer en un personnage, alors c'est le problème

.

Si vous pouvez montrer ce que la méthode que vous appelez ressemble, et comment vous l'appelez, cela aiderait beaucoup.

Pour ce que ça vaut, je l'ai utilisé avec l'axe des chaînes non-ASCII sans problème dans le passé. Je soupçonne fortement c'est un problème avec la façon dont vous l'utilisez plutôt que l'axe lui-même, bien que je suis prêt à être démentie:)

EDIT: D'après vos commentaires, il semble que vous avez des problèmes recevoir les données de formulaire HTML, avant de toucher le service Web. Si l'utilisateur a tapé « å » dans la forme, alors c'est ce que vous devriez voir lors du débogage dans Eclipse. Si vous mettez de mauvaises données dans votre service Web, il est pas étonnant que vous obtenez des données incorrectes sur à l'autre bout. Je vous suggère d'exécuter WireShark pour voir exactement ce que le navigateur vous envoie, tant en termes de les octets bruts et aussi ce que l'encodage du contenu, il est la spécification. Je suppose que votre serveur web traite comme ISO-8859-1, mais il est en fait UTF-8.

Une fois que vous avez correctement la chaîne de la forme, je pense que vous trouverez il n'y a aucun problème du tout en passant sur le service Web.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top