2012-04-11 2 views
0

Исходная строка HTML (включая символ) поступает из файла ресурсов strings.xml и предназначена для отображения в WebView. Я проверил с этим в ресурсах:Дисплей ® зарегистрированный символ товарного знака в Android v4.0 WebView?

<string name="MY_STRING">®</string> 
  • Используя фактический символ товарного знака в ресурсах (®), проекты сборки, но при отображении в WebView он показывает, как «Тетрадь» (т.е. «A» circumflex, за которым следует зарегистрированный знак торговой марки) - т.е. показаны два символа, первый неправильный & нежелателен.
  • Я вижу тот же результат при использовании ссылки на объект, &#174;
  • Сбой &reg;, и проект не строится.

Это код, который толкает строковый ресурс в WebView:

String html = getString(R.string.MY_STRING); 
((WebView)findViewById(R.id.terms_web_view)).loadData(html, "text/html", "UTF-8"); 

Я также попытался это, но это не помогло:. webView.getSettings() setDefaultTextEncodingName ("UTF-8 «);

Я подтолкнул строку HTML к Logcat, и она выглядит отлично - она ​​правильно отображает символ. Итак, если строка в порядке, и WebView настроен на использование UTF-8, почему символ не отображается правильно?

ОБНОВЛЕНИЕ Я тестировал на других устройствах. Я могу воспроизвести эту проблему только на Galaxy Nexus на Android v4.04. На Nexus One v2.3.x, Wildfire S на v2.3.x и вкладке Samsung 10.1 на v3.2, он отлично работает. Я изменил заголовок вопроса, чтобы уточнить, что это проблема ICS.

+0

Ресурсы String не предназначены для хранения произвольного HTML, включая произвольные ссылки на сущности. Попробуйте '' ® '' как литерал 'String' с' loadData() 'и посмотреть, работает ли он. Если это так, подумайте о сохранении этой информации в другом месте, кроме строкового ресурса. – CommonsWare

+0

Это не похоже на проблему, связанную с ресурсами, так как webView.loadData (" ®", "text/html", "UTF-8") дает тот же (проблемный) результат. –

+1

Это не то, что я предложил, и я не ожидал, что это сработает. Попробуйте 'webView.loadData (" ® "," text/html "," UTF-8 ")'. – CommonsWare

ответ

4

Строковые ресурсы не предназначены для хранения произвольного HTML, включая ссылки произвольных объектов.

Вы могли быть в состоянии получить любую ссылку на сущность, чтобы работать, если вы предварительно денешься:

<string name="MY_STRING">&amp;reg;</string> 

IIRC, который должен декодировать в &reg; после вызова getString().

В конце дня вам необходимо получить &reg; до WebView. Если вы не можете определить способ сделать это со строковым ресурсом, вам нужно будет сохранить это значение где-то еще.

1

Вы используете loadData (html, "text/html", "UTF-8"); Этот метод ожидает строку html в вашей переменной html. Но это не так. Попробуйте

String html = "<html><body>My text is ®</body></html>"; 

например.

--updated иметь полный документ HTML

И если вы храните его в файле используйте ресурс:

<string name="MY_STRING" formatted="false"><html><body>My text is ®</body></html></string> 
+0

Не боюсь. webView.loadData (" ®", "текст/html", "UTF-8"); дает тот же результат -> ® –

+0

Вы уверены в этой попытке? Текст «Мой тест ...» не указан в вашем комментарии. – Snicolas

+0

Код, который я использовал в тесте, - webView.loadData (« ®», «текст/html», «UTF-8»); –

0

Это не ответ разработчика Android, а просто что-то простое, если вы пытаетесь написать кого-то, и ни Ⓡ nor ™ не доступны в качестве символов (например, на моем телефоне LG Android 7.0).Просто скопируйте эти символы из этого потока сообщений и отправьте их в сообщении самому себе или напишите им в быстрой записке. Тогда вы сможете легко их использовать для будущего использования.

+0

Этот ответ, похоже, не о WebView, о котором спрашивает вопрос. – Pang

Смежные вопросы