我需要在我的一个android项目中处理表情符号。当我发送post请求并在收到响应时进行解码时,我通过utfencoding做到了。问题出现了mysql字符限制,因为插入其保存编码响应并将其发送回Android设备。因此在android中,一个笑脸被视为一个角色,而在mysql中,每个笑脸大约有4-5个角色。我知道可能的解决办法可能是在mysql中保存解码的sring但是大多数时候它在解码时在保存到服务器并在发送响应时对字符串进行编码时会破坏表情符号。我曾使用以下函数分别对请求和响应进行编码和解码
val = URLEncoder.encode(string, "UTF-8");
value = URLDecoder.decode(text, "UTF-8");
答案 0 :(得分:1)
UTF-8编码完全支持表情符号的unicodes,但MySQL的utf8却没有!要将表情符号保存到MySQL数据库,您需要使用utf8mb4。 MySQL的utf8
和utf8mb4
之间的区别在于前者只能存储3个字节的字符,而后者可以存储4个字节的字符。
设置数据库归类的示例:
SET NAMES utf8mb4;
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
答案 1 :(得分:0)
答案 2 :(得分:0)
无需在服务器中处理这些事情。我们,Android开发人员可以处理这些事情,如跟随..
EditText etEmojiEditText;
现在以字符串形式输入表情符号..
String toServer = etEmojiEditText.getText();
String toServerUnicodeEncoded = StringEscapeUtils.escapeJava(toServer);
解码上述编码如下..
String serverResponse = toServerUnicodeEncoded;
String fromServerUnicodeDecoded =StringEscapeUtils.unescapeJava(serverResponse);