如何在android中编码和解码表情符号?

 ayuanliang 发布于 2022-12-31 10:52

我在我的应用程序中使用了https://github.com/rockerhieu/emojicon库.当我在我的代码中传递静态unicode字符串时,表情符号是可见的,但是如果我使用常规的get webservice将表情符号发送到php服务器并检索字符串,那么它只是将unicode字符串显示到我的应用程序中.如果我比较,静态和服务器检索的字符串是相同的.

谁能告诉我在申请中做了什么错误.在IOS中开发了相同的应用程序,他们所做的是在发送到服务器时首先将字符串编码为ASCII> UTF-8.然后他们以与发送时相同的方式解码字符串.任何人都可以建议我,如果这也兼容android,如果是的话,我怎么能这样做.

2 个回答
  • 我和表情符号使用了相同的库.我使用URLEncoder.encode(commentString,"UTF-8")进行编码,类似地,使用URLDecoder.decode(encodedComment,"UTF-8")进行解码.

    适合我.希望也适合你.

    2022-12-31 10:54 回答
  • 我们可以使用commons-lang(commons-lang-2.5.jar)库来编码和解码unicode字符.在这里下载jar文件或使用gradle:compile 'org.apache.commons:commons-lang3:3.4' .

    对于编码使用 - StringEscapeUtils.escapeJava(String text) 这可以在android中使用EditText调用时使用getText方法时,它将在发送到Web服务器之前正确编码unicode字符.

    对于解码使用 - StringEscapeUtils.unescapeJava(String text) 这可以在android TextView中使用setText,它将在收到来自Web服务器的响应后正确解码unicode字符.


    例如:

    EditText etEmojiEditText = new EditText(this);
    etEmojiEditText.setText("TYPE SOMETHING IN EMOJI");
    
    String toServer = etEmojiEditText.getText();
    String toServerUnicodeEncoded = StringEscapeUtils.escapeJava(toServer);
    
    String serverResponse = "SOME RESPONSE FROM SERVER WITH UNICODE CHARACTERS";
    String fromServerUnicodeDecoded = StringEscapeUtils.unescapeJava(serverResponse);
    

    仅供参考.也可以使用Web服务端的编码和解码.Unicode编码的字符串应该从Web服务解码,Web服务的响应应该在发送给客户端之前进行编码.服务器表应包含utf8mb4而不是utf8,因为unicode字符每个字符需要4个字节.因此unicode不会以3字节表示.

    2022-12-31 10:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有