很多时候我们和服务器交互或者前端将文本保存到文件的时候,涉及一些带有表情符号的文本,因为存储的原因,要进行编码和解码过程,否则我们可能无法取出或者存入,或者是乱码。(一个简单的例子)

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:layout_marginLeft="15dp"android:layout_marginRight="15dp"tools:context="test.com.unicodet.MainActivity"><EditTextandroid:id="@+id/input"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/control"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:text="显示"android:textSize="15sp"android:background="#00aa00"/><TextViewandroid:id="@+id/display"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20dp"android:layout_marginTop="20dp" />
</LinearLayout>

Activity

//  Android表情符号的输入与取出
public class MainActivity extends AppCompatActivity{private EditText mInput;private Button mControl;private TextView mDisplay;private String mContent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initClick();}/***初始化控件*/private void initView() {mInput= (EditText) findViewById(R.id.input);mControl= (Button) findViewById(R.id.control);mDisplay= (TextView) findViewById(R.id.display);}/*** 点击事件*/private void initClick() {mInput.addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {mContent=encode(s.toString());Log.e("TAG","---------"+mContent);}});//显示mControl.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mDisplay.setText(decode(mContent));}});}/*** 将输入的内容编码* @param content* @return*/public static String encode(String content) {StringBuilder sb = new StringBuilder(content.length() * 3);for (char c : content.toCharArray()) {if (c < 256) {sb.append(c);} else {sb.append("\\u");sb.append(Character.forDigit((c >>> 12) & 0xf, 16));sb.append(Character.forDigit((c >>> 8) & 0xf, 16));sb.append(Character.forDigit((c >>> 4) & 0xf, 16));sb.append(Character.forDigit((c) & 0xf, 16));}}return sb.toString();}/*** 将取出内容解码* @param content* @return*/public static String decode(String content) {final Pattern reUnicode = Pattern.compile("\\\\u([0-9a-zA-Z]{4})");Matcher sMatcher = reUnicode.matcher(content);StringBuffer sb = new StringBuffer(content.length());while (sMatcher.find()) {sMatcher.appendReplacement(sb,Character.toString((char) Integer.parseInt(sMatcher.group(1), 16)));}sMatcher.appendTail(sb);return sb.toString();}
}

android表情编码与解码相关推荐

  1. java emoji 编码_Java对Emoji表情编码与解码

    Java对Emoji表情编码与解码,使用到Java Emoji Converter . GitHub地址:https://github.com/binarywang/java-emoji-conver ...

  2. android Java BASE64编码和解码一:基础

    今天在做Android项目的时候遇到一个问题,需求是向服务器上传一张图片,要求把图片转化成图片流放在 json字符串里传输. 类似这样的: {"name":"jike&q ...

  3. Android中常用的编码和解码(加密和解密)的问题

    1. URL Encoding     编码目的是为了在⺴址上可以包含中文等特殊字符 解码是为了把编码后的内容还原成原始的内容 格式如下%9C%3C%F3%98 规则: %hex_byte 就是将实际 ...

  4. android硬编码封装mp4,【Android 音视频开发打怪升级:音视频硬解码篇】四、音视频解封和封装:生成一个MP4...

    [声 明] 首先,这一系列文章均基于自己的理解和实践,可能有不对的地方,欢迎大家指正. 其次,这是一个入门系列,涉及的知识也仅限于够用,深入的知识网上也有许许多多的博文供大家学习了. 最后,写文章过程 ...

  5. android Java BASE64编码和解码二:图片的编码和解码

    1.准备工作 (1)在项目中集成 Base64 代码,集成方法见第一篇博文:android Java BASE64编码和解码一:基础 (2)添加 ImgHelper 工具类 package com.a ...

  6. iOS  Emoji表情编码/解码

    之前做弹幕的时候 遇到的表情编码解码问题 表情编码一般是使用unicode编码 ,编码之后的格式 \ud83d\ude18\ud83d\ude18world\u4e16\u754chaha\ud83d ...

  7. Android 中的编码与解码

    前言:今天遇到一个问题,一个用户在登录的时候,出现登录失败.但是其他用户登录都是正常的,经过调试发现登录失败的用户的密码中有两个特殊字符: * .#  . 特殊符号在提交表单的时候,出现了编码不一样的 ...

  8. android 图片转base64内存变大了_开发者最喜爱的图片编码格式:opencv编码,解码,显示base64图片...

    由于图片格式尺寸较大,在互联网上若想传递一张图片,往往会 把图片进行格式转换,然后进行数据传输,图片格式往往会转换为base64编码图片 base64编码图片 BASE64编码表 base64编码 是 ...

  9. android 表情的输入 Unicode实现表情展示 无需图片素材及相关解析

    表情是关于聊天模块的重要组成部分.因为表情可以传递出很多文字无法表达的信息,比如说:情绪.语气等. 不过在软件的开发工程中,表情的使用却给开发者带来了不小的工作任务.特别是在表情的编码和解析这两步. ...

最新文章

  1. python中ttk和tkinter_Python tkinter与ttk日历
  2. 单片机和java_java和单片机哪个难学?
  3. layui使用弹出层 关闭后弹层的内容又显示出来
  4. clickhouse hadoop_ClickHouse如何实现存算分离?
  5. linux服务器程序乱码,Linux安装GBK/GB2312程序显示乱码的五种解决方法
  6. plsql提示列快捷键_20种VSCode快捷键清单,助你更快编码
  7. 【BZOJ1226】学校食堂(动态规划,状态压缩)
  8. Python编程 介绍(入门)
  9. 【知识点总结】大数据技术原理与应用
  10. Guass-newton
  11. python打开读取文件内容
  12. MyBatis:万能Map和模糊查询(狂神)
  13. 利用html标记制作静态网页,使用HTML制作网页《静态网页制作》.ppt
  14. android 拔插键盘自动切换输入法
  15. 【java期末复习题】第4章 面向对象基础
  16. uniapp - 电商优购项目
  17. 【Java余元面向对象】(23)抽象方法/抽象类
  18. 关于微信小程序A 与 微信小程序B 之间的跳转问题
  19. 反垃圾邮件网关的一些知识
  20. resultMap中的association使用

热门文章

  1. linux软件源历史版本,解决deepin 15.9.2以后版本软件太旧的问题,混合lion与panda源使用...
  2. 各大高校自曝状态一览 排名不分先后
  3. 金蝶云星空与旺店通集成解决方案(金蝶主管库存)
  4. C++程序设计课程主页-2013级
  5. PPT批量替换字体、行间距操作
  6. 金融行业的VC风险投资,PE私募股权,LP有限合伙人,GP普通合伙人
  7. linux查询当前目录剩余空间,如何在linux下查看目录的剩余空间大小
  8. Telnet实验验证(详解)
  9. Smarty - 手册 - 第8章 自定义函数 - {cycle}循环
  10. 利用定时器实现倒计时