【发布时间】:2014-06-07 02:50:19
【问题描述】:
我正在尝试在我的数据库中的某个字段中插入一些文本,但我遇到了表情符号问题。发生的情况是,如果我没有将连接 url 设置为jdbc:mysql://localhost:3306/MyDatabase?characterEncoding=UTF-8,那么服务器将很好地存储表情符号,但也会将非拉丁字符存储为问号。
现在,如果我这样设置我的连接 url,那么服务器将不喜欢表情符号并输出错误:
Incorrect string value: '\xF0\x9F\x98\xB1\xF0\x9F...' for column 'fullTweet' at row 1
我已在本地服务器上完成了所有必要的 utf8 兼容性步骤:
- 我将
character-set-server=utf8mb4添加到my.ini - 查询
show variables like 'character_set_server'返回utf8mb4 - 我使用查询
CREATE DATABASE twitter DEFAULT CHARACTER SET utf8mb4创建我的数据库 - 默认情况下,我的所有表格和表格字段都使用
utf8mb4_general_ci(正如我在phpmyadmin中看到的那样)
缺少什么?我确信我已经完成了所有必要的步骤,但我仍然无法让它工作,它要么只存储拉丁字符,要么不存储表情符号。
我上一个问题的补充信息:
我可以在数据库中手动输入表情符号,它们的显示方式与调试器中的显示方式完全相同(作为框)。我运行这个查询:
INSERT INTO `tweets`(`id`, `createdAt`, `screenName`, `fullTweet`, `editedTweet`) VALUES (450,"1994-12-19","john",_utf8mb4 x'F09F98B1',_utf8mb4 x'F09F98B1')
这就是表格中的行的样子:
【问题讨论】:
标签: java mysql utf-8 character-encoding