La façon dont vous appelez le service Web n'est pas entièrement claire. Est-ce que la méthode dans le service Web prend juste une chaîne? Si oui, à quoi ressemble votre chaîne en Java? Toutes les chaînes Java sont encodées en UTF-16 - si vous convertissez la représentation binaire UTF-8 en une chaîne en prenant chaque octet et en le transformant en caractère, c'est le problème.
Si vous pouviez montrer à quoi ressemblait la méthode que vous appelez, et comment vous l'appelez, cela aiderait beaucoup.
Pour ce que ça vaut, j'ai utilisé Axis avec des chaînes non-ASCII sans problème dans le passé. Je soupçonne fortement que c'est un problème avec la façon dont vous l'utilisez plutôt qu'avec Axis lui-même, bien que je sois prêt à me tromper :)
EDIT: Basé sur votre commentaire, il semble que vous ayez des problèmes recevoir les données du formulaire HTML, avant de cliquer sur le service Web. Si l'utilisateur a tapé "å" dans le formulaire, c'est ce que vous devriez voir lorsque vous déboguez dans Eclipse. Si vous mettez de mauvaises données dans votre service Web, il n'est pas étonnant que vous receviez de mauvaises données à l'autre bout. Je vous suggère d'exécuter WireShark pour voir exactement ce que le navigateur vous envoie, à la fois en termes d'octets bruts et aussi quel est le contenu de l'encodage qu'il spécifie. Je suppose que votre serveur web le traite comme ISO-8859-1 mais c'est en fait UTF-8.
Une fois que vous avez la chaîne correctement dans le formulaire, je suppose que vous constaterez qu'il n'y a aucun problème à la transmettre au service Web.
Je vais essayer d'expliquer comment nous appelons le service Web. Le premier service Web est un service tiers. Nous avons généré des stubs à partir du fichier wsdl. Les données sont affichées à partir d'un formulaire html et ressemble à ceci "å" si je le débogue dans Eclipse, il est affiché comme "¥". Nous créons un objet "query" qui est défini dans le stub. Nous créons ensuite l'enveloppe et le corps, puis appelons la méthode de service Web. Nous définissons également la propriété CHARACTER_SET_ENCODING à utf-8 (mais cela devrait être la valeur par défaut, n'est-ce pas?) –
Votre débogage le dit. Les données ne pénètrent pas correctement dans votre application. Vous voulez probablement utiliser wireshark pour voir comment le navigateur soumet les données à votre application, car le problème existe là. –
Merci à vous deux, c'était en effet les données du navigateur qui ont causé le problème. J'ai utilisé Wireshark et j'ai pensé qu'Axis était la partie défaillante. Mon serveur Web traite maintenant les données correctement comme UTF-8. (Pour Tomcat, utilisez URIEncoding = "UTF-8") –