2011-06-03 46 views
2

我從utf8數據庫讀取數據,然後在列表視圖中顯示它。 但在數據庫中包含EéA中的信件,當我在瀏覽器中手動獲取XML的話它顯示了完美的安卓視圖中的法語字母顯示問號

但在ListView這表明問號代替

如何設置的字符設置爲utf8爲我的列表視圖? 還是有其他解決方法嗎?

+0

翻譯它們時資源字符串是否顯示格式良好? – Snicolas 2011-06-03 10:46:19

+0

剛剛發現,當我在php中對encode_utf8進行編碼或iconv的字符串工作,但將其轉換爲unix時,並沒有解決問題的任何想法爲什麼? – Mars 2011-06-03 14:24:50

+0

當你的服務器提供xml頁面時,你使用什麼響應頭文件和字符集 http://download.oracle.com/javaee/1.3/api/javax/servlet/ServletResponse.html#setContentType(java.lang.String) – Snicolas 2011-06-03 20:54:11

回答

1

你應該仔細檢查你的計算機上的文件編碼。您的系統是否使用latin-1(iso-8859-1)或utf-8?

在使用utf-8聲明xmlns的拉丁文編碼文件中,口音看起來不錯,但實際上並沒有真正存儲在utf-8中。

拜, 斯特凡

+0

你'當我將這行添加到創建xml頭文件的php文件(「Content-Type:text/xml; charset = utf-8」)時是正確的。當我離開它時只會使用標題(「Content-Type:text/xml」);鉻說,它是在拉丁語-1。但我不明白爲什麼列表視圖不正確地顯示文本是因爲我的系統字符集? – Mars 2011-06-03 11:09:21

+0

這是我的觀點,你的系統是什麼? linux?如果是的話,你的字符集編碼是什麼? echo $ LANG – Snicolas 2011-06-03 11:58:31

+0

哦,我看到我的系統是在utf8中,但我試着調試它在我的HTC英雄,並得到了同樣的問題...我不能更改列表視圖的字符集latin1? – Mars 2011-06-03 12:56:01

3

這是很奇怪的,因爲Android能使用UTF-8 ......對我來說,我使用的是UTF-8編碼的資源(意大利語,德語,俄語,中國),文件和所以 - 一切正常。

有3個選項爲什麼法國重音字符顯示爲「?」標記:

  1. 你意外的讀操作過程中的某個地方進行暗示翻譯從UTF-8編碼其它/ Charset
  2. 存儲在數據庫中的數據是不是真的在UTF-8。有時候,你需要使用正確的SQLite pragma keyword
  3. 您的系統沒有包含重音字符
+0

然後我猜存儲的數據不是真的utf-8,因爲我有ascii文件保存爲utf-8。但我敢打賭,這並沒有訣竅? – Mars 2011-06-03 13:58:29

+0

@mars - 不,它不起作用,因爲文件需要轉換爲utf-8。 – barmaley 2011-06-03 14:04:06

+0

我試圖使用iconv和recode將它們轉換爲utf8,並且它們在瀏覽器和utf-8下的openoffice中完美顯示,但在android中仍然不好:s – Mars 2011-06-03 14:09:06

0

我曾經有過這個問題,正確的字體。

你應該完全刪除你的數據庫。我很確定你現在使用iconv和sqlite中的編譯指示對數據做了正確的事情。所以問題是你的包中的數據庫是舊版本。所以在eclipse中清理項目,卸載你的應用程序完全從android卸載數據庫之前卸載,更改sqlite安裝程序版本代碼(DatabaseHelper)並重新啓動。

希望它能幫助, 斯特凡

+1

該數據庫不在它在我的網絡服務器上的項目中 – Mars 2011-06-03 18:06:54

1

我有同樣的問題。確保你沒有使用StringBufferInputStream(已棄用)。該方法導致此問題。

0

使用

Html.fromHtml(串)

才能正確顯示文本。

0

讓響應成爲從您的服務器返回的對象。做下列操作:

response = Utilities.encodedToUTF8(response); 

public static String encodedToUTF8(String response) { 
    try { 
     response = new String(response.getBytes("ISO-8859-1"), "UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
     Log.e(TAG, "Error: " + e.getMessage()); 
    } 
    return response; 
}