2010-07-01 23 views
5

Tôi đang sử dụng trình phân tích cú pháp HTML có tên là Jsoup, để tải và phân tích cú pháp các tệp HTML. Vấn đề là trang web tôi đang cạo được mã hóa trong bộ mã ISO-8859-1 trong khi Android đang sử dụng mã hóa UTF-8 (?). Đây là kết quả trong một số ký tự hiển thị dưới dạng dấu chấm hỏi.Làm cách nào để chuyển đổi chuỗi thành UTF-8 trong Android?

Vì vậy, bây giờ tôi đoán tôi nên chuyển đổi chuỗi thành định dạng UTF-8.

Bây giờ tôi đã tìm thấy Lớp này được gọi là CharsetEncoder trong SDK Android, mà tôi đoán có thể giúp tôi. Nhưng tôi không thể tìm ra cách để thực hiện nó trong thực tế, vì vậy tôi tự hỏi nếu có thể nhận được sự giúp đỡ som bằng một ví dụ thực tế.

UPDATE: Mã để đọc dữ liệu (Jsoup)

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

bạn có thể đăng các mã được sử dụng để đọc một tài liệu html? – yanchenko

+0

OK, tôi đã cập nhật bài đăng của mình. – droidgren

Trả lời

6

Bạn có thể để Android làm việc cho bạn bằng cách đọc trang sang byte [] và sau đó sử dụng phương pháp phân tích cú pháp jSoup cho đối tượng String.

Đừng quên chỉ định mã hóa khi bạn tạo chuỗi từ dữ liệu được đọc từ máy chủ bằng cách sử dụng đúng Chuỗi 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 
Các vấn đề liên quan