Es posible utilizar el siguiente método para la configuración de contenido de una vista web loadData (datos de cadena, tipo de cadena mime, codificación de cadena)
¿Cómo manejar el problema con la codificación desconocida de datos html?
¿Hay una lista de codificaciones?
Sé por mi universidad que, en mi caso, html proviene de DB y está codificado con latin-1. Intento establecer el parámetro de codificación en latin-1, en ISO-8859-1 / iso-8859-1, pero todavía tengo problemas con la visualización de signos especiales como ä, ö, ü.
Estaré muy agradecido por cualquier consejo.
WebView.loadDataWithBaseURL()
WebView.loadData () no funciona correctamente en absoluto. Lo que tenía que hacer era:
Creo que en su caso debería reemplazar UTF-8 con latin1 o ISO-8859-1 tanto en el encabezado como en WebView.loadData ().
Y, para dar una respuesta completa, aquí está la lista oficial de codificaciones: http://www.iana.org/assignments/character-sets
Actualizo mi respuesta para que sea más inclusiva:
Para usar WebView.loadData () con codificaciones que no sean latin1, debe codificar el contenido html. El ejemplo anterior no funcionaba correctamente en Android 4+, así que lo modifiqué para que se vea de la siguiente manera:
Pero luego cambié a WebView.loadDataWithBaseURL () y el código se volvió muy limpio y no depende de la versión de Android:
Por alguna razón, estas funciones tienen una implementación completamente diferente.
fuente
Según tengo entendido,
loadData()
simplemente genera unadata:
URL con los datos proporcionados.Lea los javadocs para
loadData()
:Por lo tanto, debe usar US-ASCII y escapar de cualquier carácter especial usted mismo, o simplemente codificar todo usando Base64. Lo siguiente debería funcionar, asumiendo que usa UTF-8 (no lo he probado con latin1):
fuente
Tengo este problema, pero:
no funciona en todos los dispositivos. Y fusiono algunos métodos:
Funciona.
fuente
use esto: String customHtml = text;
fuente
fuente
La forma más segura de cargar htmlContent en una vista web es:
La "codificación Base64" es una recomendación oficial que se ha escrito nuevamente (ya presente en Javadoc) en el último error de 01/2019 en Chrominium (presente en WebView M72 (72.0.3626.76)):
https://bugs.chromium.org/p/chromium/issues/detail?id=929083
Declaración oficial del equipo de Chromium:
"Solución recomendada:
nuestro equipo recomienda que codifique los datos con Base64. Le proporcionamos ejemplos de cómo hacerlo:
Esta solución es compatible con versiones anteriores (funciona en versiones anteriores de WebView) y también debería estar preparada para el futuro (no tendrá problemas de compatibilidad en el futuro con respecto a la codificación de contenido) ".
Muestra de código:
fuente
las respuestas anteriores no funcionan en mi caso. Necesita especificar utf-8 en la metaetiqueta
fuente
webview.loadDataWithBaseURL (nulo, texto, "texto / html", "UTF-8", nulo);
fuente