WebView.loadData ()가 전혀 제대로 작동하지 않습니다. 내가해야 할 일은 :
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
myWebView.loadData(header+myHtmlString, "text/html", "UTF-8");
귀하의 경우 헤더와 WebView.loadData () 모두에서 UTF-8을 latin1 또는 ISO-8859-1로 바꿔야한다고 생각합니다.
그리고 완전한 답변을 제공하기 위해 다음은 공식 인코딩 목록입니다. http://www.iana.org/assignments/character-sets
더 포괄적으로 답변을 업데이트합니다.
Latin1 이 아닌 인코딩으로 WebView.loadData () 를 사용하려면 HTML 콘텐츠를 인코딩해야합니다. 이전 예제는 Android 4 이상에서 올바르게 작동하지 않았으므로 다음과 같이 수정했습니다.
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
String base64 = Base64.encodeToString(htmlString.getBytes(), Base64.DEFAULT);
myWebView.loadData(base64, "text/html; charset=utf-8", "base64");
} else {
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
myWebView.loadData(header + htmlString, "text/html; charset=UTF-8", null);
}
그러나 나중에 WebView.loadDataWithBaseURL ()으로 전환 했고 코드는 Android 버전에 의존하지 않고 매우 깨끗해졌습니다.
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
myWebView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
어떤 이유로 이러한 기능은 완전히 다른 구현을 가지고 있습니다.