作者:KEN | 来源:互联网 | 2023-01-10 16:19
我使用Mysql 5.7.18并且在更新时遇到了表情符号的问题JDBC
.
表创建:body
是键入的utf8
,localizations
是utf8mb4
CREATE TABLE `my_table` (
`body` TEXT NOT NULL,
`localizations` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8;
现在我SequelPro
用来插入数据.为了正确地做,我按Database -> View using encoding -> utf8mb4
.插入代码:
INSERT INTO my_table(body, localizations) VALUES ('test', '');
然后我尝试从jdbc加载它.这是当前在项目中使用的连接字符串部分(此处仅使用格式化以方便阅读):
?useEncoding=true
&characterEncoding=UTF-8
它成功localizations
从数据库加载.但是从JDBC更新表会返回错误:
SQLException: Incorrect string value: '\xF0\x9F\x94\xA5"}...' for column 'localizations'
我想这是因为连接编码.SequelPro
有一个Show server variables
选项,这里的DIFF utf8
和utf8mb4
:
character_set_client = utf8mb4
character_set_cOnnection= utf8mb4
character_set_results = utf8mb4
collation_cOnnection= utf8mb4_general_ci
所以我尝试修改连接字符串:
?useEncoding=true
&characterEncoding=UTF-8
&sessiOnVariables=
character_set_client=utf8mb4,
character_set_cOnnection=utf8mb4,
character_set_results=utf8mb4,
collation_cOnnection=utf8mb4_general_ci
仍然是同一个问题.有什么建议吗?