É possível usar o seguinte método para a configuração do conteúdo de um loadData de visualização da web (String data, String mimeType, String encoding)
Como lidar com o problema de codificação desconhecida de dados html ?!
Existe uma lista de codificações ?!
Eu sei da minha faculdade que, no meu caso, html vem do DB e é codificado com latin-1. Tento definir o parâmetro de codificação para latin-1, para ISO-8859-1 / iso-8859-1, mas ainda tenho problemas com a exibição de sinais especiais como ä, ö, ü.
Ficarei muito grato por qualquer conselho.
WebView.loadDataWithBaseURL()
WebView.loadData () não está funcionando corretamente. O que eu tive que fazer foi:
Acho que no seu caso você deve substituir UTF-8 por latin1 ou ISO-8859-1 tanto no cabeçalho quanto no WebView.loadData ().
E, para dar uma resposta completa, aqui está a lista oficial de codificações: http://www.iana.org/assignments/character-sets
Eu atualizo minha resposta para ser mais inclusiva:
Para usar WebView.loadData () com codificações não latin1, você deve codificar o conteúdo html. O exemplo anterior não estava funcionando corretamente no Android 4+, então eu o modifiquei para ter a seguinte aparência:
Mais tarde, porém, mudei para WebView.loadDataWithBaseURL () e o código tornou-se muito limpo e não depende da versão do Android:
Por alguma razão, essas funções têm implementações completamente diferentes.
fonte
Pelo que entendi,
loadData()
simplesmente gera umdata:
URL com os dados fornecidos.Leia os javadocs para
loadData()
:Portanto, você deve usar US-ASCII e escapar quaisquer caracteres especiais você mesmo ou apenas codificar tudo usando Base64. O seguinte deve funcionar, supondo que você use UTF-8 (não testei isso com o latin1):
fonte
Eu tenho esse problema, mas:
não funciona em todos os dispositivos. E eu mesclo alguns métodos:
Funciona.
fonte
use isto: String customHtml = text;
fonte
fonte
A maneira mais segura de carregar htmlContent em uma visualização da Web é:
"Codificação Base64" é uma recomendação oficial que foi escrita novamente (já presente no Javadoc) no último bug 01/2019 no Chrominium (presente no WebView M72 (72.0.3626.76)):
https://bugs.chromium.org/p/chromium/issues/detail?id=929083
Declaração oficial da equipe do Chromium:
"Correção recomendada:
nossa equipe recomenda que você codifique os dados com Base64. Fornecemos exemplos de como fazer isso:
Esta correção é compatível com versões anteriores (funciona em versões anteriores do WebView) e também deve ser preparada para o futuro (você não terá problemas de compatibilidade futuros com relação à codificação de conteúdo). "
Amostra de código:
fonte
as respostas acima não funcionam no meu caso. Você precisa especificar utf-8 na metatag
fonte
webview.loadDataWithBaseURL (nulo, texto, "text / html", "UTF-8", nulo);
fonte