2012-04-11 4 views
0

소스 HTML 문자열 (기호 포함)은 strings.xml 리소스 파일에서 나 왔으며 WebView에 표시되도록 지정되어 있습니다.Android v4.0 WebView에 Display ® 등록 상표 기호가 있습니까?

<string name="MY_STRING">®</string> 
  • 는 자원 (®)의 실제 상표 기호를 사용하여 프로젝트 빌드,하지만 웹보기에 표시 할 때, 즉 "A®"(로 보여줍니다 나는 자원이 테스트를했습니다 "A"곡절 기호, 등록 상표 기호) - 두 문자가 표시됩니다. 첫 번째 문자는 잘못된 것입니다. & 원하지 않습니다. &reg;를 사용하여 엔티티 참조, &#174;
  • 을 실패 사용할 때
  • 나는 같은 결과를보고, 프로젝트 구축하지 않습니다.

이는 웹보기로 문자열 리소스를 밀어 코드입니다 :

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 문제라는 것을 명확히하기 위해 질문 제목을 변경했습니다.

+0

문자열 리소스는 임의의 엔터티 참조를 포함하여 임의의 HTML을 유지하도록 설계되지 않았습니다. ''® ''을'loadData()'로 리터럴'String'으로 시도하고 그것이 작동하는지 확인하십시오. 그렇다면 문자열 정보 이외의 다른 곳에이 정보를 저장하는 것을 고려하십시오. – 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, 즉 getString()에 전화 후 &reg;로 디코딩한다.

하루가 끝날 때 &reg;부터 WebView까지 입력해야합니다. 문자열 리소스를 사용하여이를 수행 할 방법을 결정할 수 없다면이 값을 다른 위치에 저장해야합니다.

1

loadData (html, "text/html", "UTF-8")를 사용하고 있습니다. 이 메소드는 html 변수에 html 문자열이 있어야합니다. 그러나 그렇지 않습니다. 시도해보십시오.

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

예를 들어,

는 전체 HTML 문서를

을 가지고 --updated 그리고 당신은 리소스 파일 사용에 저장하는 경우 :

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

두렵지 않습니다. webView.loadData (" ®", "text/html", "UTF-8"); 같은 결과가 나타납니다. → –

+0

이 시도가 확실합니까? "My test is ..."텍스트가 귀하의 의견에 표시되지 않았습니다. – Snicolas

+0

테스트에서 사용한 코드는 webView.loadData (" ®", "text/html", "UTF-8")입니다. –

0

안드로이드 개발자의 답변이 아니지만 누군가에게 문자 메시지를 보내려하고 Ⓡ이나 ™를 기호로 사용할 수없는 경우 (예 : 내 LG 휴대 전화 안드로이드 7.0).이 메시지 스레드의 심볼을 복사하여 메시지로 보내거나 간단한 메모로 채우십시오. 그런 다음 나중에 사용할 수 있습니다.

+0

이 답변은 WebView에 관한 것 같지 않습니다. 질문에 대한 질문입니다. – Pang

관련 문제