Я использую HtmlCleaner
для очистки ISO-8859-1
закодированного веб-сайта в Android.
Я реализовал это во внешнем jar
файле, который я импортировал в свое приложение для Android.
Когда я запускаю модульные тесты в Eclipse, он правильно обрабатывает норвежские буквы (æ,ø,å
) (я могу убедиться в этом в отладчике), но в приложении Android эти символы выглядят как перевернутые знаки вопроса.
Если я присоединяю отладчик к своему приложению для Android, я вижу, что эти буквы неверны в тех же местах, в которых они были хороши при запуске модульного теста из Eclipse, поэтому это не проблема отображения / рендеринга / просмотра в приложении Android .
Когда я копирую текст из отладчиков, я получаю следующие результаты:
Процесс Java (модульный тест) : "Blårek", "Benny"
Процесс Android (в эмуляторе) : "Bl rek", "Benny"
Я бы ожидал, что эти строки будут равны, но обратите внимание, как «å» заменяется на перевернутые знаки вопроса в Android.
Я попытался запустить htmlCleaner.getProperties().setRecognizeUnicodeChars(true)
без удачи. Кроме того, я не нашел способа принудительного кодирования UTF-8 или ISO-8859-1 в html cleaner, но я не уверен, что это могло бы изменить ситуацию.
Вот код, который я запускаю:
HtmlCleaner htmlCleaner = new HtmlCleaner();
// connect to url and get root TagNode from HtmlCleaner
InputSteram is = new URL( url ).openConnection().getInputStream();
TagNode rootNode = htmlCleaner.clean( is );
// navigate through some TagNodes, getting the ContentNode
ContentNode cn = rootNode...
// This String contains the incorrectly decoded characters on Android.
// Good in Oracle JVM though..
String value = cn.toString().trim();
Кто-нибудь знает, что может вызвать изменения поведения декодирования на Android? Я предполагаю, что основное различие между этими двумя средами состоит в том, что приложение Android использует стек java.io для Android, а мои модульные тесты используют стек Sun / Oracle.
Спасибо
Гейр