2009-06-29 4 views
0

Pour «alimenter» un service Web .NET à partir de Java, je passe les chaînes xml via une connexion de socket directe vers le serveur.Passage d'une chaîne UTF8 via java à un service Web .NET

Tout fonctionne wunderbar tant que je n'inclue aucun caractère 'wierd' dans mes chaînes xml. Ä ou ß par exemple.

Je scripté autour et pensé que php5 le problème est résolu par utf8_encode(myXmlString). Malheureusement

retString = new String (retString.getBytes(),"UTF-8");   

ne fonctionne pas.

Tous les conseils seraient appréciés.

thx à l'avance

 A 

Répondre

2

Si votre code XML est correctement codé, vous ne devriez pas avoir de problème. Ma conjecture est que votre XML n'est pas correct pour commencer. Plutôt que de contourner cela, je vous encourage fortement à tout arranger pour produire et consommer les bonnes valeurs.

En particulier, votre retString devrait déjà avoir les valeurs Unicode correctes. Si ce n'est pas le cas, vous allez rencontrer des problèmes quoi que vous fassiez. Si a ont les bonnes valeurs, vous devriez être en mesure de le convertir en octets en utilisant le jeu de caractères UTF-8, et de les alimenter à la socket - aussi longtemps que le XML se déclare en UTF-8 . (Il sera par défaut UTF-8 si vous ne spécifiez rien d'autre, tant qu'il ne commence pas avec une marque d'ordre d'octets UTF-16.)

Je suggère que vous jetez un oeil à mon article Debugging Unicode Problems: Vérifiez les données à chaque étape, pas seulement en imprimant la chaîne mais en regardant les points de code individuels en son sein. Faites cela aux côtés Java et .NET.

0

Ne pas oublier que vous avez 2 niveaux de codage ici:

  1. l'encodage de votre document XML. Est-ce que cela a le codage correct (par exemple UTF-8). Pouvez-vous l'écrire dans un fichier avant de l'envoyer à votre serveur et vérifier qu'il est correctement codé?
  2. le codage du document XML stringifié sur le réseau. Encore une fois, vous devrez vérifier cela. Avez-vous la chaîne et ensuite exécuter getBytes(String encoding) dessus? Vous devez utiliser un encodage spécifié pour cela, et non l'implémentation par défaut obsolète
+0

1 .: Je peux écrire mon XML dans un fichier, c'est correct là. 2: Je définis le type de contenu sur "application/x-www-form-urlencoded; charset UTF-8", car le service Web ne répond pas si je ne le fais pas. (malheureusement, je n'ai pas accès à ce système) - N'y at-il pas d'équivalent à utf8_encode de php? sry pour lame'in environ ... – KB22

Questions connexes