如何在Android中将字符串转换为Unicode

6
我正在从JSON中解析一些Unicode码,并将它们传输到我的Android应用程序中。该API提供了一些图标的Unicode码,例如\ue600。当我直接将此Unicode码添加到textview中,如textview.setText("\ue600");时,textview上会显示正确的图标。但是当我从json api解析这个Unicode码,然后setText该Unicode码时,textview上只会显示\ue600。我该如何解析或转换这些字符串为Unicode码,在textview中获取它们的图标呢? 谢谢

我已经尝试过这个,但是没有任何作用。 - israr
是的,我已经尝试了大部分的Unicode字符。它们只能直接显示图标,但在从JSON解析时无法显示图标。 - israr
你是从一个 REST 服务获取数据吗?如果是的话,请检查你的数据库字符串以启用 UTF-8。 - Muthu
在我的情况下,我将在我的 PHP 和 MySQL 数据库对象上使用类似于以下的代码 $mysqli->set_charset("utf8")。 - Muthu
你可以尝试这个: new String("\ue600".getBytes("ISO-8859-1"), "UTF-8"); - Muthu
我尝试过这个新的String("\ue600".getBytes("ISO-8859-1"), "UTF-8");但仍然显示Unicode而不是图标。 - israr
5个回答

7

将您的unicode转换为这种格式,然后在textview中使用如下方式:textview.setText(Html.fromHtml(your_unicode_here));就可以了。


你所说的“your_unicode_here”是指硬编码的Unicode值还是从JSON解析出来的字符串? - erluxman
your_unicode_here 意味着从 JSON 解析出来的字符串。 - Husnain Aslam

2

StringEscapeUtils可以完成大部分工作,但它只支持HTML4。对于未涵盖的字符,您可以自己创建类并根据需要添加。以下是一个示例类:

public class HTMLDecoder {
    public static String decodeHTML(String html) {
        String out = StringEscapeUtils.unescapeHtml4(html);
        out = out.replaceAll("®", "®");
        out = out.replaceAll("â\u0084¢", "™");
        return out;
    }
}

添加到build.gradle文件中

compile 'org.apache.commons:commons-lang3:3.0'

1
以下对我来说很好用。
String unicode = "\u0048\u0065\u006C\u006C\u006F";
String Title = StringEscapeUtils.unescapeJava(unicode);
System.out.println(Title);

在您的build.gradle文件中添加依赖项:compile 'commons-lang:commons-lang:2.6'

不能工作于\u003C - famfamfam

0
textview.setText(Html.fromHtml(UNICODE_CHARS));

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接