在我的Android应用程序中,存储在mysql数据库中的每个字符串都被编码。 我这样做是因为我在字符串中有表情符号,这是我找到的唯一方法。
编码:
byte[] data = str.getBytes("UTF-8");
String base64String = Base64.encodeToString(data, Base64.DEFAULT);
解码:
byte[] data = Base64.decode(userObject.getString("mystr"), Base64.DEFAULT);
String question = new String(data, "UTF-8");
答案 0 :(得分:1)
你是对的,你应该以更简单的方式保存文本数据。您可以解决使用emojis提到的问题,将数据库表的默认字符集更改为utf8mb4。
您可以通过执行以下步骤来实现这一目标:
使用此SQL语句更改MySQL数据库中表的字符集 像这样:
ALTER TABLE your_table_name charset=utf8mb4,
MODIFY COLUMN your_fieldname1 VARCHAR(255) CHARACTER SET utf8mb4,
MODIFY COLUMN your_fieldname2 VARCHAR(255) CHARACTER SET utf8mb4;
将此添加到MySQL conf文件并重新启动或重新加载服务器(通常位于/etc/mysql/my.cnf或类似)
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
SET NAMES utf8mb4;
答案 1 :(得分:0)
根据维基百科:
当需要编码需要通过设计用于处理文本数据的媒体进行存储和传输的二进制数据时,通常使用Base64编码方案。这是为了确保数据在运输过程中保持完整而不进行修改。
除非您有特定原因,否则我建议您不要将应用程序中的所有内容传递到Base64中的后端Web服务。
答案 2 :(得分:0)