【问题标题】:Display \u00F0\u009F\u0098\u0098 string to emoji in android textview?在android textview中将\u00F0\u009F\u0098\u0098字符串显示为表情符号?
【发布时间】:2018-09-06 16:11:02
【问题描述】:

str = videoname.get(i);
    String toServer = str;
    String toServerUnicodeEncoded = StringEscapeUtils.escapeJava(toServer);
    viewHolder.textss.setText(toServerUnicodeEncoded);
    Log.e("emos",toServerUnicodeEncoded);

我正在使用 volley 从 URL 中检索一个字符串,并且该字符串中包含我想在 Android TextView 中显示的表情符号。因此,为此,我获取了字符串,然后将其传递给StringEscapeUtils.escapeJava(toServer),然后我以"\u00F0\u009F\u0098\u0098" 形式获取表情符号,而不是"\uD83D\uDE18" 形式。那么如何在textview 中显示表情符号?

【问题讨论】:

标签: android textview


【解决方案1】:

这对我有用,试试这个。

导入这个库

implementation 'org.apache.commons:commons-lang3:3.4'

然后使用它的方法将字符串(表情符号代码)转换为Emoji以显示在TextView

textView.setText(StringEscapeUtils.unescapeJava(string_value));

例如:-

输入字符串 :- "\ud83d\ude01"

结果:-

【讨论】:

    【解决方案2】:
    String title = new String(c.getString("title").getBytes("ISO-8859-1"), "UTF-8");
    

    在解析响应时,我现在使用它而不是:

    String title = String(c.getString("title");
    

    这解决了我的表情符号问题。

    【讨论】:

      【解决方案3】:

      你需要unescape你的转义字符串。

      您可以使用StringEscapeUtils.unescapeJava(String) 取消转义。

      问题已充分解释here

      【讨论】:

      • 如果我对转义字符串进行转义,那么我会得到一些方形图像来代替表情符号
      • 您确定您的字体支持表情符号吗?这可能是问题所在。
      • 是的,我用过android.support.text.emoji.widget.EmojiTextView
      • 你的意思是我必须使用字体
      • 是的,默认字体可能不支持您的表情符号。您可以使用 Android 的书法库来更改整个应用程序中的字体。
      【解决方案4】:

      您不需要将其转换为unicode,直接使用该字符串代码,例如

       TextView txt = (TextView) findViewById(R.id.txt);
              txt.setText("\u00F0");
      

      更多单杀代码请查看URL

      希望对您有所帮助。

      【讨论】:

      • txt.setText("\u00F0");这显示了 textview 中的确切字符串
      • 是的,在 textview 中我得到“ð”这样的图像
      • 但我没有得到确切的表情符号
      • 这是表情符号吗??
      • 您想要哪个表情符号,请在您的问题中分享图片
      【解决方案5】:

      这是 html 编码字符串。校验码:

      String txt = "\u00F0\u009F\u0098\u0098";
      tvHihiView.setText(Html.fromHtml(txt));
      

      【讨论】:

      • 没有工作。在 textview 中得到类似“ð”的内容
      • 能否提供来自服务器的原始数据
      【解决方案6】:

      TextView txt_price = (TextView) findViewById(R.id.txt_price);

      txt_price.setText("\u20B9" + "5000");

      【讨论】:

        猜你喜欢
        • 2019-06-01
        • 2012-04-22
        • 2020-06-23
        • 2012-04-02
        • 2019-05-20
        • 1970-01-01
        • 2021-11-07
        • 1970-01-01
        • 2011-03-21
        相关资源
        最近更新 更多