JDBC向MySQL插入生僻字报错

问题描述

通过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();
阅读 11.2k
1 个回答

大概率是jdbc驱动的问题,建议换高版本(5.1.47及以上)的驱动,如

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>

连接字符串加上
useUnicode=true&characterEncoding=utf8&mysqlEncoding=utf8

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题