【问题标题】:How to convert string into unicode in android如何在android中将字符串转换为unicode
【发布时间】:2015-04-06 18:39:33
【问题描述】:

我正在从json 解析一些unicodes 到我的android 应用程序,api 提供unicodes 的图标,如\ue600,当我将此unicode 直接添加到textview 中,如textview.setText("\ue600"); 它在textview 上给出正确的图标。但是当我从json api 解析这个unicode 然后我setTextunicode 它只是在textview 上显示\ue600。 我如何将这些字符串解析或转换为unicodes 以获取textview 中的图标。

谢谢

【问题讨论】:

  • 我已经尝试过了,但没有任何效果。
  • 是的,我已经尝试了大部分 unicode。它们只直接显示图标,但从 json 解析时不显示图标
  • 您是从休息服务中获得的?如果是这样,请检查您的数据库字符串以启用 UTF-8
  • 在我的情况下,我将在 php 和 mysql 中的数据库对象 $mysqli->set_charset("utf8") 上使用类似的东西。
  • 你可以试试这个新的 String("\ue600".getBytes("ISO-8859-1"), "UTF-8");

标签: android json unicode


【解决方案1】:

将您的unicode 转换为 的格式,然后在您的textview 中像这样使用textview.setText(Html.fromHtml(your_unicode_here)); 它应该可以工作。

【讨论】:

  • your_unicode_here 是指硬编码的 unicode 值还是从 json 解析的字符串
  • your_unicode_here 表示从 json 解析的字符串。
【解决方案2】:

以下对我来说很好。

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
【解决方案3】:
textview.setText(Html.fromHtml(UNICODE_CHARS));

【讨论】:

    【解决方案4】:

    如何解析 JSON 数据?如果您使用Gson,您可以使用GsonBuilder.disableHtmlEscaping() 方法来显示正确的字符而不是它们的代码。

    【讨论】:

      【解决方案5】:

      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.bradle

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 2020-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多