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

Posted

技术标签:

【中文标题】如何在 Android 中将字符串转换为 UTF-8?【英文标题】:How do I convert a string to UTF-8 in Android? 【发布时间】:2011-03-10 20:32:19 【问题描述】:

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

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

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

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

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

【问题讨论】:

能否贴出用于读取html文档的代码? 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何在 Android 中将字符串转换为 UTF-8?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 c# 中将字符串从 utf8 转换(音译)为 ASCII(单字节)?

如何在Android中将时间戳字符串转换为日期[重复]

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

如何在android中将字符串转换为日期时间[关闭]

如何在 Android 中将颜色整数转换为十六进制字符串?

如何在 Android SOAP Webservices 中将 InputStream 数据转换为字符串