2010-07-01 75 views
5

我正在使用名爲Jsoup的HTML解析器來加載和解析HTML文件。問題是我刮的網頁編碼爲ISO-8859-1字符集,而Android使用UTF-8編碼(?)。這是一些字符顯示爲問號的結果。如何在Android中將字符串轉換爲UTF-8?

所以現在我想我應該將字符串轉換爲UTF-8格式。

現在我發現這個類在Android SDK中叫做CharsetEncoder,我猜可以幫助我。但我不知道如何在實踐中實現它,所以我想知道是否可以通過一個實際的例子得到som的幫助。

UPDATE:代碼讀取數據(Jsoup

url = new URL("http://www.example.com"); 
Document doc = Jsoup.parse(url, 4000); 
+2

您可以發佈用於讀取html文件的代碼? – yanchenko 2010-07-01 22:33:46

+0

好的,我更新了我的帖子。 – droidgren 2010-07-02 04:28:55

回答

6

你可以讓Android的做的工作爲你通過閱讀網頁變成一個byte [],然後使用解析字符串對象jSoup方法。

當您使用正確的字符串constructor從服務器讀取的數據創建字符串時,不要忘記指定編碼。

4

Byte encodings and Strings

public static void main(String[] args) { 

     System.out.println(System.getProperty("file.encoding")); 
     String original = new String("A" + "\u00ea" + "\u00f1" 
           + "\u00fc" + "C"); 

     System.out.println("original = " + original); 
     System.out.println(); 

     try { 
      byte[] utf8Bytes = original.getBytes("UTF8"); 
      byte[] defaultBytes = original.getBytes(); 

      String roundTrip = new String(utf8Bytes, "UTF8"); 
      System.out.println("roundTrip = " + roundTrip); 

      System.out.println(); 
      printBytes(utf8Bytes, "utf8Bytes"); 
      System.out.println(); 
      printBytes(defaultBytes, "defaultBytes"); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 

    } // main 
相關問題