2013-05-20 150 views
4

我有一個包含特殊字符的單詞的xml文件。 例如:在android中不顯示特殊字符

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

當我經由指令使用的字符串:

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

輸出將是:

test¹,test²,測試,測試

我無法顯示特殊字符:⁶,⁷。

有人可以幫我解決這個問題嗎?

謝謝!

回答

3

我只是測試它使用兩個選項:

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

在它的確顯示爲test¹, test², test, test敬酒,而在logcat的字符串顯示正確 - test¹, test², test⁶, test⁷ - 所以看起來一切都很好,跟你的方式定義你的字符串資源。

我的猜測是用於UI的默認字體不提供這些字符()。您可以嘗試從資產中使用自己的字體,確保它支持所需的字符。

+0

事實上,我意識到這是一個字體問題。你能推薦一些使我的案例的字體?以字體出現的人不能正常工作。 – Antonio

+2

要預測哪種字體適合您的需求是相當困難的。也許你可以嘗試一下'DejaVuSans.ttf'。只需將它添加到項目的'assets'文件夾中,並使用它就像'tv.setTypeface(TypeText.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:// ):'「UTF-8」'將被視爲格式參數,而不是編碼 – Vladimir

+0

剛剛在我的設備中檢查..並且它工作正常。可能是我在某些方面是錯誤的...再次檢查 – stinepike

0

你加在XML文件中的頭?

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

如果問題仍然存在,或者您需要確保一切正確顯示。您可以將字符串保存爲utf8編碼的代碼,並在讀出後解析它。就像在Swing GUI窗口構建器中輸入特殊字符一樣,swing窗口構建器也會這樣做。