2011-06-15 144 views
2

如何更改Android上的字體以允許顯示「'」或「à」等特殊字符? 實際上,包含這些字符的字符串存儲在sqlite數據庫中。特殊字符問題

回答

1

默認情況下,Android SQLite使用UTF-8。 我有這個問題,因爲當我第一次啓動時填充數據庫時,我用另一個字符集使用txt文件。

+0

這個ans並沒有太大的幫助,請你稍微詳細解釋一下吧? – 2013-07-31 10:09:03

+0

我正在使用文本文件填充數據庫,其編碼與UTF-8不同 – 2013-08-01 00:24:41

2

當您將文本加載到您的TextView中時,這會對您有用嗎?

textView.setText(new String(textFromDatabase, "UTF-8")); 

這使用String構造函數來設置字符集名稱。您可以將「UTF-8」更改爲不同的Character encoding - 另外,請查看javadoc的String

String(byte[] bytes, String charsetName) - 構建通過使用指定的字符集的指定的字節數組進行解碼的新的字符串。

+0

儘管完美的工作,並作爲一個有效的替代品,我會建議任何人在顯示文本之前避免設置編碼。一般來說,在編碼時(編碼地獄),人們不會想要混合和記住不同的編碼,因爲(容易)帶來了所有潛在的調試問題。我的選擇是在讀取時進行編碼,以UTF-8編碼(出於所有衆所周知的原因,或者至少默認使用的編碼),並檢查/忘記編碼。唯一的情況是,如果我不能/禁止更改內容。 – davidcesarino 2011-06-15 13:26:44

+0

我完全同意。我只是把它作爲一個選項拋出。我無法計算我在StackOverflow上遇到的一次性有用解決方案的次數...我無法在別處找到的東西。 – 2011-06-15 14:08:47

+0

如此真實。每個人都有一個世界。每個發佈解決方案。 – davidcesarino 2011-06-15 15:29:16

1

Droid字體支持「'」,「à」和其他許多字符。我一直使用它們(pt語言)。

其實,我很確定他們支持所有基本拉丁文,拉丁文1補充和第一個擴展拉丁文範圍。他們也支持像希伯來文等許多其他人,儘管我不確定SDK版本之間是否發生了變化。

您也可以在Market下載Unicode Map應用程序,以檢查您的特定設備中可以使用哪些字符。我也一直在sqlite中存儲unicode文本,但我仍然沒有任何問題。

需要考慮的一件事:檢查您設置的編碼是否與您的源編碼匹配。它可以是文本或網址...一個例子:

BufferedReader b = new BufferedReader(new InputStreamReader(url.openStream(), MY_ENCODING)); 

你確定這不是一個問題,什麼地方?

1

您應該使用''而不是'將其存儲到Sqlite數據庫中。 例如,如果要將5 o'clock存儲到數據庫中,則必須將其編寫爲5 O''clock。看看here,瞭解更多信息。

+0

我從來沒有在Android中的sqlite中存儲單引號的問題。另外,他說他不僅在單引號上遇到問題,而且在許多其他「特殊」(即,,除了來自Unicode的基本拉丁文範圍)字符。 – davidcesarino 2011-06-15 21:42:29