2010-09-03 4 views
2

Voici mon problème, je reçois une chaîne d'un Webservice de savon qui semble contenir UTF8 codé% c3% 89. Cette chaîne est une URL que je dois atteindre pour obtenir une image qui contient une partie de l'URL.Java (Android) Caractère UTF-8 dans la chaîne

Mon problème est que le serveur générant l'image ne reconnaît pas le codage% c3% 89 et ne crée donc pas le droit. Lorsqu'il est remplacé par sa représentation normale (c'est-à-dire É), le serveur génère correctement l'image.

Ma question est: Comment puis-je remplacer le caractère encodé dans la chaîne?

Ps: Je n'ai pas accès au côté serveur

voici mon code

URL aURL = new URL(URLDecoder.decode(url)); URLConnection conn = aURL.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); bm = BitmapFactory.decodeStream(bis);

Merci beaucoup :)

Chut

Répondre

0

Je viens de réaliser que l'URL a été parfaitement comprise par le site lors de l'utilisation version antérieure d'Android (2.2 permet de dire avant) Je commence à me demander ce qui a changé dans le cadre URLConnection depuis cette version ... de toute façon i va essayer de passer à travers ce problème en hébergeant l'image requise sur le webservice plutôt que de renvoyer l'URL.

Merci

4

Vous devez passer le codage de caractères en tant que 2ème argument à URLDecoder#decode(), sinon il utilisera le codage de caractères par défaut de la plate-forme.

System.out.println(URLDecoder.decode("%c3%89", "ISO-8859-1")); // Ã? 
System.out.println(URLDecoder.decode("%c3%89", "UTF-8")); // É 
+0

Merci pour votre réponse mais cela n'a pas résolu mon problème. Je vais essayer de me faire comprendre. 'URL aURL = nouvelle URL (URLDecoder.decode (url)); URLConnection conn = aURL.openConnection(); conn.connect(); InputStream est = conn.getInputStream(); ' À ce stade, l'URL utilisée par l'objet UrlConnection est compréhensible pour le serveur (lorsque je la copie, je la colle sur un navigateur et renvoie la bonne image). Le problème passe par InputStream qui, apparemment, ne pas envoyer la même demande en tant que navigateur ... Je suis genre de là perdu ... – Hush

+0

Que voulez-vous dire par « en passant par InputStream »? Désolé, après tout, votre question est assez confuse et ambiguë. Le fait est, quelque part le mauvais encodage est utilisé pour décoder le personnage. – BalusC

+0

@BalusC vous venez de me sauver de commettre sucide: D –

Questions connexes