问题描述
通过JDBC向MySQL插入生僻汉字报错,比如这个𫍯
字。MySQL字符集为utf8mb4
,通过Navicat手动执行SQL是能够正确向数据库插入的。但是Java程序插入时报错:
java.sql.SQLException: Incorrect string value: '\xF0\xAB\x8D\xAF' for column 'name' at row 1
问题出现的环境背景及自己尝试过哪些方法
一些人的中文姓名包含生僻字,向数据库插入姓名时报错导致名字无法插入。
尝试过将连接字符串指定为jdbc:mysql://localhost:3306/test_corpus?useUnicode=true&character_set_server=utf8mb4
也无法解决。
相关代码
String sql = "insert into t_zh_fullname (name) values (?)";
pstmt = connection.prepareStatement(sql);
pstmt.execute();
大概率是jdbc驱动的问题,建议换高版本(5.1.47及以上)的驱动,如
或
连接字符串加上
useUnicode=true&characterEncoding=utf8&mysqlEncoding=utf8