Je dois récupérer un objet JSON à partir d'un serveur distant et pour cela, j'utilise cette fonction qui fonctionne très bien, sauf que, à un moment donné, des données étranges sont extraites que je crois, c'est parce qu'il utilise ASCII Charset à décoder. < P> Veuillez trouver ci-dessous la méthode que j'utilise p> Tous ces en-têtes que je passe sont correctes et que j'ai vérifié la même via Elément d'inspection dans Google Chrome ou Firebug Plugin Si vous connaissez Mozilla. P> Maintenant, le problème est que la plupart du temps, je reçois les données lisibles, mais parfois, je reçois parfois des données illisibles. P> J'ai débogué à l'aide de Eclipse et remarquez que le charert sous l'enveloppe montrent comme "US-ASCII". Je joins un JPG pour référence Quelqu'un peut-il me dire comment Puis-je modifier le Charset d'ASCII à UTF-8 de la réponse avant que je fasse Veuillez zoomer pour voir le bouton Image plus clairement p> Merci d'avance p> p> p>
réponse = client.execute (httpport); code>.
PS: Comme vous l'avez remarqué que je suis en train de passer Charset = UTF-8 dans l'en-tête et que j'ai déjà vérifié avec Firebug et Google Chrome que je passe les en-têtes exacts. P>
5 Réponses :
Vous devrez peut-être ajouter un «codage d'acceptation» -header et définir ceci sur «UTF-8» P>
J'ai essayé cela, mais cela n'a pas fait le même résultat httppost.Sethader ("accepter-coding", "utf-8"); code>
Cela a fonctionné pour moi en utilisant headers.put ("codage d'acceptation", "utf-8"); code>
Je ne pense pas que ce soit un problème avec vos en-têtes, je pense que c'est un problème avec votre chaîne. Il suffit de faire dire que l'UTF-8 ne signifie pas que la chaîne que vous écrivez est UTF-8, et cela dépend beaucoup de la manière dont la chaîne a été codée et ce qui est dans "la charge payante"
qui dit, vous pouvez toujours re -code la chose correctement avant de l'envoyer sur le fil, par exemple: p> Voir si cela fonctionne pour vous. p> p>
Merci pour la réponse mais cela n'a pas fonctionné, mais ce que je suis confus parce que la stringentity est juste un objet JSON que je passe dans la charge utile et que je ne le codant pas dans UTF-8 ou ne devrait pas avoir d'importance. le codage de brict de réponse je pense que je suis incapable de faire
J'ai pu résoudre le problème qui le mentionnait simplement pour les personnes pouvant faire face à une question similaire.
Après avoir reçu la réponse, obtenez d'abord l'entité en utilisant
précédemment je faisais juste
entité httpentité = réponse.getity (); code>
et puisque ma réponse était un objet JSON convertit une entité en chaîne, mais en utilisant "UTF-8" quelque chose comme ça
ResponsibleJsonObject = New JSONObject (entitéUtils.tostring (entité, "utf-8")); code> p>
ResponseJsonObject = Nouvelle JSONOOBJECT (entitéUtils.tostring (entité)); code> p>
J'ai aussi eu le même problème, où ioutils.tostring (entité.getContent (), "utf-8") code> ne fonctionnait pas non plus. Le changer en
entitéutils code> a fait le travail
juste pour l'enregistrement: le champ d'en-tête "Content-coding" est incorrect - un serveur correct rejette la demande car elle contient un format de codage de contenu non défini. P>
En outre, la fixation d'un paramètre Charset à l'application / JSON n'a pas de sens. P>
Bourne a déjà répondu que dans le commentaire ci-dessus cependant. P>
changer d'entité = ioutils.tostring (réponse.getenity (). GetContent ()) code>
À entité = entityutils.tostring (réponse.getity (), "utf-8") code>
a fait le tour. P>