java - 在 MySQL 中存储 Android 表情符号

标签 java mysql emoji

我们将用户选择的表情符号存储在 MySQL 的文本正文中。我们的列看起来像这样

`body` text CHARACTER SET utf8 COLLATE utf8_bin,

原始数据:<div id='mobile-question-style' style=\"font-family: 'Helvetica Neue',Helvetica,Arial; color:#333333;\">\uD83D\uDE1D\uD83D\uDE3E\uD83D\uDE3E\uD83D\uDE3A\uD83D\uDE3A\uD83D\uDE1D</div>

数据库中的数据:<div id='mobile-question-style' style="font-family: 'Helvetica Neue',Helvetica,Arial; color:#333333;">????????????</div>

但是如果从 Rest API 获取它,它看起来是正确的:"body":"<div id='mobile-question-style' style=\"font-family: 'Helvetica Neue',Helvetica,Arial; color:#333333;\">\uD83D\uDE1D\uD83D\uDE3E\uD83D\uDE3E\uD83D\uDE3A\uD83D\uDE3A\uD83D\uDE1D</div>",

现在,当我使用 Rest API 更新问题时,它会丢失编码并显示“????”

更新后来自端点的数据:"body":"<div id='mobile-question-style' style=\"font-family: 'Helvetica Neue',Helvetica,Arial; color:#333333;\">????????????</div>",

更新正文时有特殊的逻辑,所以有人知道这里发生了什么吗?

最佳答案

要将表情符号存储到 Mysql 数据库中,请将您要存储的字符串转换为编码的 Base 64 字符串。在您的应用程序端,您所要做的就是使用 Base 64 解码该字符串。

编码

                byte[] data = editTextFieldWithEmojis.getText().toString().getBytes("UTF-8");
                base64String = Base64.encodeToString(data, Base64.DEFAULT);

解码

                byte[] data = Base64.decode(stringWithEmojis, Base64.DEFAULT);
                newStringWithEmojis = new String(data, "UTF-8");

关于java - 在 MySQL 中存储 Android 表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24684739/

相关文章:

javascript - 如何在 JSP 中订购包含项目的页面

java - 如何考虑夏令时在 mongoDB 中存储 future 的调度日期

java - 为什么 ByteBuffer::asCharBuffer 返回的 CharBuffer 中的第一个字符总是空格?

xcode - 如何在代码中添加表情符号?

带有表情符号的 Android 键盘

java - 在 Java 中向数组添加新元素而不重复

mysql - 选择连接表中每行的字段值不相同的行

mysql - 将数据库中的数据绑定(bind)到下拉列表 + ASP.NET MVC

php - JSON 和我的 PHP 页面

html - 在 Mac 上垂直对齐 div 中的表情符号