如何在Android中将字符串转换为UTF-8?

时间:2010-07-01 21:12:10

标签: java android html html-parsing jsoup

我正在使用一个名为Jsoup的HTML解析器来加载和解析HTML文件。问题是,当我使用ISO-8859-1编码(?)时,我正在抓取的网页会在UTF-8字符集中进行编码。这导致一些字符显示为问号。

所以现在我想我应该将字符串转换为UTF-8格式。

现在我在Android SDK中找到了这个名为CharsetEncoder的类,我想这可以帮助我。但是我无法弄清楚如何在实践中实现它,所以我想知道是否可以通过一个实际的例子获得帮助。

更新:读取数据的代码(Jsoup

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

2 个答案:

答案 0 :(得分:6)

您可以让Android为您完成工作,方法是将页面读入byte [],然后使用jSoup方法解析String对象。

当您使用正确的字符串constructor从服务器读取的数据创建字符串时,不要忘记指定编码。

答案 1 :(得分: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