我有一个“旧的”数据库(在utf 8中),我在其中使用JDBC进行读写。现在,我还必须能够将表情符号存储到表的一列中。
我将涉及的列的字符集更改为utf8mb4:
ALTER TABLE
myTable
CHANGE column_name column_name
longtext
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
NOT NULL;
但是,当我尝试在该列中插入图释时,出现了著名的错误
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x8D\xF0\x9F...'
我应该转换整个数据库,还是我做错了什么?
最佳答案
需要与utf8mb4连接以获得👍
等。?useUnicode=yes&characterEncoding=UTF-8
调用中的getConnection()
。
作为后备,在连接后执行SET NAMES utf8mb4
。
(请参阅评论。)
“对于Connector / J 8.0.12及更早版本:为了使用utf8mb4
字符集进行连接,必须为服务器配置character_set_server=utf8mb4
;如果不是这样,则将UTF-8用于characterEncoding在连接字符串中,它将映射到MySQL字符集名称utf8
,这是utf8mb3
的别名。
关于mysql - MySql和JDBC:将单列的字符集更改为utf8mb4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57526681/