Android WebView UTF-8 не отображается

У меня есть веб-просмотр и я пытаюсь загрузить в него простой текст UTF-8.

mWebView.loadData("將賦予他們的傳教工作標示為", "text/html", "UTF-8"); 

Но WebView отображает мусор ANSI / ASCII.

Очевидно, проблема с кодировкой, но чего мне не хватает в том, чтобы сообщать веб-обозревателю о отображении текста Unicode?

Это приложение HelloWorld.

Использование:

 mWebView.loadDataWithBaseURL(null, "將賦予他們的傳教工作標示為", "text/html", "utf-8", null); 

Или с помощью WebSettings с setDefaultTextEncoding :

 WebSettings settings = mWebView.getSettings(); settings.setDefaultTextEncodingName("utf-8"); 

Для последних версий Android, API с 16 по 22, он был протестирован и корректно работает с использованием метода loadData (), поэтому mimeType должен включать: «charset = utf-8».

 WebView mWebView = (WebView) findViewById(R.id.myWebView); WebSettings settings = mWebView.getSettings(); settings.setDefaultTextEncodingName("utf-8"); mWebView.loadData(myCharacters, "text/html; charset=utf-8",null); 

или

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

Эта проблема восходит по крайней мере к пряничным

Кажется, что это было нарушено в какой-то форме или моде навсегда. Выпуск 1733

Использовать loadDataWithBaseURL вместо loadData

 // Pretend this is an html document with those three characters String scandinavianCharacters = "øæå"; // Won't render correctly webView.loadData(scandinavianCharacters, "text/html", "UTF-8"); // Will render correctly webView.loadDataWithBaseURL(null, scandinavianCharacters, "text/html", "UTF-8", null); 

Теперь часть, которая по-настоящему раздражает, – это то, что на Samsung Galaxy S II (4.0.3) loadData () работает очень хорошо, но тестирование на Galaxy Nexus (4.0.2) многобайтовые символы искажены, если вы не используете loadDataWithBaseURL ( ). Документация WebView

Последние версии Android

Некоторые из них сообщают об изменении поведения вызовов loadData, требующих, чтобы mimeType включал charset=utf-8 .

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

обсуждение

В первый раз, когда я увидел это, мой босс принес мне свой телефон, ранний Nexus, в то время как я развивался в то время на Samsung Galaxy II, и он появился в нашей электронной новостной ленте на его телефоне с большим количеством символов, отличных от ASCII , Таким образом, это не только долгое время в Android, но и не совместимо между производителями устройств. Это вопрос, когда вам нужно запрограммировать защиту.

Intereting Posts