Página web en los datos: text / html no disponible con ciertas cadenas de contenido WebView text / html
Estoy usando el siguiente código Java para crear HTML para mostrar el contenido.
public String htmlFromArrayList(ArrayList<TSI> a) { StringBuilder returnStringBuilder = new StringBuilder(); for (TSI i : a) { returnStringBuilder.append("<h3>"); returnStringBuilder.append(i.itemTitle); returnStringBuilder.append("</h3><p>"); returnStringBuilder.append(i.itemText); returnStringBuilder.append("</p>"); } return returnStringBuilder.toString(); }
Para cargar la cadena que uso
- Decodificación de caracteres especiales HTML
- Dipaly farsi texto en la web de android (para los teléfonos que no apoyan farsi)
- Cómo definir un Charset nuevo en Java / Android?
- Codificación de caracteres de cadena con Android y Oracle Java
- Codificación y decodificación de bytes con ZXing
mWebView.loadData(htmlFromArrayList(mSummaryItemArrayList), "text/html", null);
Ahora esto trabaja para cerca de 60% a 70% de mi ArrayList<TSI>
, pero para los otros consigo un error cuando abro la TSI
:
The web page at data:text/html;null,%3Cp%E.......p%3E might be temporarily down or it may have moved...
Estoy asumiendo que esto tiene algo que ver con personajes extraños en el juego de caracteres. Que quiere decir el mensaje de error?
- Descodificación de HttpEntity en el problema de codificación de cadenas android
- Android: ¿Cómo eliminar espacios en blanco en caracteres chinos?
- Los caracteres especiales se reemplazan con un cuadrado en la aplicación de Android
- Android Studio - "Carácter no asignable para codificar UTF-8"
- Tratar con unicode , cómo deshacerse de? Android / java
- Uso de la biblioteca jcharset
- No se puede establecer la codificación de SQLiteDatabase en nada que no sea UTF-8
¿Tiene caracteres extraños como signos de porcentaje, barras invertidas u otros caracteres no alfabéticos en su i.itemText o i.itemTitle? Si lo hace, eso hará que el problema de "página web no encontrada".
http://code.google.com/p/android/issues/detail?id=4401
Además, no está pasando en una codificación, trate de pasar en "UTF-8" en lugar de null.
mWebView.loadData(htmlFromArrayList(mSummaryItemArrayList), "text/html", "utf-8");
Este problema se puede solucionar reemplazando todos los símbolos% con la entidad HTML (Ampersand Pound 37): (& # 37).
Hay informes de que si algún personaje chino se introduce en su webView, todavía puede obtener el problema de "página no encontrada" incluso si maneja el signo de porcentaje. Así que el trabajo alrededor es probar esto:
Esto funciona con todo más los caracteres chinos:
mWebView.loadData(URLEncoder.encode(html,"utf-8").replaceAll("\\+"," "), "text/html", "utf-8");
Fuente http://code.google.com/p/android-rss/issues/detail?id=15