12
votes

Problème de codage de chaîne dans webview

Je reçois la réponse du service Web indiqué ci-dessous xxx

La sortie de WebView est affichée ci-dessous

 Entrez la description de l'image ici

Comment puis-je afficher le caractère exact dans webview?

Le code J'ai utilisé une vue Web indiquée ci-dessous xxx


0 commentaires

6 Réponses :


45
votes

1) Utilisez webview.loaddawithbaseURL, il se comporte différent (mieux) que webview.loaddata

2) Essayez de remplacer le codage "UTF-8" par un autre, par exemple US-ASCII. Le mieux est de déterminer ce que le codage est vraiment utilisé dans le texte que vous essayez d'afficher.


6 commentaires

J'ai remplacé la phrase wv.loaddata (objet1.Getstring ("post_content"). ToString (), "Texte / HTML", "US-ASCII"); Mais le résultat est la même aucun changement


C'est fou, mais ça marche. Toute explication sur laquelle LoadDawithbaseURL est meilleure?


LoadData stocke les paramètres des paramètres de la chaîne et transmet ce paramètre à Loadurl. LoadDawithbaseURL se charge directement. Etude webview source et vous apprendrez;)


Pour moi, simplement en utilisant webview.loaddawithbaseurl (null, htmlsource, "text / html", "utf-8", null) au lieu de webview.loaddata (htmlsource, "text / html" , "Utf-8") corrige les problèmes de codage. Merci!


webview.loaddawithbaseURL () fonctionne comme par magie pour après avoir du mal pendant une heure. Merci


Ceci est un bizarre Android Quirk



11
votes

J'ai corrigé mes problèmes avec l'utilisation de "Texte / HTML; Charset = UTF-8" comme type MIME sur webview.loaddata

EDIT: Merci à Andyd pour son commentaire. Malheureusement, cette pointe ne fonctionne pas sur chaque appareil (je pense que cela dépend de la version WebKit usagée). Utilisation de Webview.html # LoadDawithBaseURL fonctionne sur chaque périphérique (testé).


2 commentaires

Travaillé pour moi aussi. Beau conseil, merci! Voici ce que mon appel ressemble à: dwv.loaddata (mcontentFromfeed, "Texte / HTML; Charset = UTF-8", NULL);


N'a pas travaillé pour moi, mais l'approche LoadDawithbaseURL a résolu le problème pour moi.



0
votes

J'ai eu le même problème dans le passé, le webview.loaddata () avec le type MIME "Texte / HTML; Charset = UTF-8" n'a pas fonctionné pour moi. Mais le seul problème était que je n'avais pas défini le "méta http-equiv =" type de contenu "contenu =" text / html; Charset = uf-8 " dans mon test HTML.


0 commentaires

0
votes

Ce code a fonctionné pour moi.

String base64EncodedString = null;
                        try {
                            base64EncodedString = android.util.Base64.encodeToString((preString+mailContent.getBody()+postString).getBytes("UTF-8"), android.util.Base64.DEFAULT);
                        } catch (UnsupportedEncodingException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                        if(base64EncodedString != null)
                        {
                            wvMailContent.loadData(base64EncodedString, "text/html; charset=utf-8", "base64");  
                        }
                        else
                        {
                            wvMailContent.loadData(preString+mailContent.getBody()+postString, "text/html; charset=utf-8", "utf-8");
                        }


0 commentaires

6
votes
content.loadData(htmlsource, "text/html; charset=utf-8", null);
It worked for me :)

0 commentaires

3
votes

Basé dans votre code d'origine, vous pouvez utiliser deux options:

Utilisation de LoadDawithBaseURL () CODE>: P>

wv.loadData(strContent, "text/html; charset=utf-8", "UTF-8");


0 commentaires