在MySQL中存储Android表情符号
我们将用户选择的表情符号存储在MySQL的文本正文中。 我们的列看起来像这样
`body` text CHARACTER SET utf8 COLLATE utf8_bin,
原始数据:
\uD83D\uDE1D\uD83D\uDE3E\uD83D\uDE3E\uD83D\uDE3A\uD83D\uDE3A\uD83D\uDE1D
DB中的数据:
????????????
但是,如果从Rest API获取它,它看起来是正确的: "body":"
\uD83D\uDE1D\uD83D\uDE3E\uD83D\uDE3E\uD83D\uDE3A\uD83D\uDE3A\uD83D\uDE1D
", "body":"
\uD83D\uDE1D\uD83D\uDE3E\uD83D\uDE3E\uD83D\uDE3A\uD83D\uDE3A\uD83D\uDE1D
",
现在,当我更新问题时,使用Rest API它会丢失编码并显示“????”
我更新后来自端点的数据: "body":"
????????????
", "body":"
????????????
",
更新身体时有特殊的逻辑,那么任何人都知道这里发生了什么吗?
要将表情符号存储到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");