Эта проблема восходит, по крайней мере, к пряникам
Это, кажется, было сломано в некоторой форме или моде навсегда.
Выпуск 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, и он появился в нашей новостной ленте экономических новостей на его телефоне, в которой было много -АССИИ персонажей. Таким образом, не только это является давней проблемой в Android, но и несовместимо между производителями устройств. Это вопрос, где вы должны программировать в обороне.