2013-05-20 3 views
4

특수 문자가 포함 된 xml 파일이 있습니다. I는 명령을 통해 스트링을 사용하면특수 문자가 안드로이드에 표시되지 않습니다.

<string name="test_text">"test¹, test², test⁶, test⁷ "</string> 

는 : 예를 들어 는

((TextView) view.finViewdById(R.id.test)).setText(R.string.test_text); 

가 출력 될 것이다

test¹, test² 테스트 테스트

⑥, ⑦ 특수 문자를 표시 할 수 없습니다.

누군가가 문제를 해결할 수 있도록 도와 줄 수 있습니까?

감사합니다.

답변

3

난 그냥 두 가지 옵션을 사용하여 테스트 한 - test¹, test², test⁶, test⁷ - 로그 캣에서 문자열이 제대로 표시되는 동안, 그것은 참으로 test¹, test², test, test로 표시되는 토스트에서

Log.d("TEST", getString(R.string.test_text)); 
Toast.makeText(this, getString(R.string.test_text), Toast.LENGTH_LONG).show(); 

그렇게 모든 방식에 좋은 것 같습니다 당신 문자열 리소스를 정의하십시오.

내 생각에 UI에 사용되는 기본 글꼴은 이러한 문자 ()를 제공하지 않습니다. 애셋에서 자신의 글꼴을 사용하여 필요한 문자를 지원하는지 확인하십시오.

+0

실제로 글꼴 문제라는 것을 깨달았습니다. 제 경우를 만드는 글꼴을 추천 해 주시겠습니까? 활자체에있는 사람들이 제대로 작동하지 않습니다. – Antonio

+2

당신의 요구에 맞는 글꼴을 예측하는 것은 꽤 어렵습니다. 아마도'DejaVuSans.ttf'를 시도해 볼 수 있습니다. 프로젝트의'assets' 폴더에 그것을 추가하고'tv.setTypeface (Typeface.createFromAsset (getResources(). getAssets(), "DejaVuSans.ttf"));'와 같이 사용하십시오.'tv'는 TextView입니다. – Vladimir

+0

좋습니다! 나는 모든 문제를 해결했다. 도움 주셔서 감사합니다. – Antonio

1

이이

((TextView) findViewById(R.id.test)).setText(getString(R.string.test_text, "UTF-8")); 
+3

이것은 올바르게 보이지 않습니다 :'getString (int resId, Object ... formatArgs)'([specification] (http : // developer.android.com/reference/android/content/Context.html)) :''UTF-8 ''은 포맷 인자로 취급 될 것입니다. – Vladimir

+0

이 내 장치에서 체크 된 것을 인코딩하지 않습니다. 어떤면에서 나는 틀릴 수도 있습니다 ... 다시 확인하십시오 – stinepike

0

을 사용하면 XML 파일에 헤더를 추가 했 시도 할 수 있습니다?

<?xml version="1.0" encoding="utf-8"?> 

문제가 계속 발생하거나 모든 것이 올바르게 표시되어야하는 경우. String을 utf8로 인코딩 된 코드로 저장하고 읽은 후에 파싱 할 수 있습니다. Swing GUI 창 빌더에 특수 문자를 입력하면 스윙 창 빌더가 수행하는 것과 같습니다.

관련 문제