소스 HTML 문자열 (기호 포함)은 strings.xml 리소스 파일에서 나 왔으며 WebView에 표시되도록 지정되어 있습니다.Android v4.0 WebView에 Display ® 등록 상표 기호가 있습니까?
<string name="MY_STRING">®</string>
- 는 자원 (®)의 실제 상표 기호를 사용하여 프로젝트 빌드,하지만 웹보기에 표시 할 때, 즉 "A®"(로 보여줍니다 나는 자원이 테스트를했습니다 "A"곡절 기호, 등록 상표 기호) - 두 문자가 표시됩니다. 첫 번째 문자는 잘못된 것입니다. & 원하지 않습니다.
®
를 사용하여 엔티티 참조,®
- 을 실패 사용할 때
- 나는 같은 결과를보고, 프로젝트 구축하지 않습니다.
이는 웹보기로 문자열 리소스를 밀어 코드입니다 :
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을 사용하도록 설정되어 있으면 심볼이 올바르게 표시되지 않는 이유는 무엇입니까?
업데이트 나는 다른 장치에서 테스트를 마쳤습니다. Android v4.04의 Galaxy Nexus에서만이 문제를 재현 할 수 있습니다. Nexus One v2.3.x, v2.3.x의 Wildfire S 및 v3.2의 Samsung Tab 10.1에서는 정상적으로 작동합니다. 이것이 ICS 문제라는 것을 명확히하기 위해 질문 제목을 변경했습니다.
문자열 리소스는 임의의 엔터티 참조를 포함하여 임의의 HTML을 유지하도록 설계되지 않았습니다. ''® ''을'loadData()'로 리터럴'String'으로 시도하고 그것이 작동하는지 확인하십시오. 그렇다면 문자열 정보 이외의 다른 곳에이 정보를 저장하는 것을 고려하십시오. – CommonsWare
webView.loadData ("
®", "text/html", "UTF-8")과 동일한 리소스 관련 문제가없는 것으로 보입니다. –그건 내가 제안한 것이 아니며 필자가 반드시 기대할 것도 아니다. 'webView.loadData ("
®", "text/html", "UTF-8")'을 시도해보십시오. – CommonsWare