我们将用户选择的表情符号存储在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>

DB中的数据:<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/

10-09 17:17