尝试通过 JDBC 将 UTF-8 插入 MySQL 时出现“乱码”
这是我的连接设置方式:
Connection conn = DriverManager.getConnection(url + dbName + "?useUnicode=true&characterEncoding=utf-8", userName, password);
并且在尝试向表中添加行时出现以下错误:
Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90...' for column 'content' at row 1
我正在插入数千条记录,当文本包含 \xF0 时,我总是收到此错误(即错误的字符串值总是以 \xF0 开头)。
该列的排序规则是 utf8_general_ci。
可能是什么问题呢?
回答

解决方法
遇到同样的问题,保存数据utf8mb4需要确保:
character_set_client, character_set_connection, character_set_results是utf8mb4:
character_set_client和character_set_connection指示字符集,其中的语句由客户端发送,
character_set_results指示字符集的服务器查询结果返回给客户端。
请参阅字符集链接
表和列编码是 utf8mb4
对于JDBC,有两种解决方案:
方案一(需要重启mysql):
- 修改my.cnf如下并重新启动MySQL:
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci //这个可能会没有,那就添加进去
/*
这可以确保数据库character_set_client, character_set_connection, character_set_results是utf8mb4在默认情况下。
*/


重启MySQL
将你原先的表和列编码更改为 utf8mb4
方案二(不需要重启mysql):
将表和列编码更改为 utf8mb4
characterEncoding=UTF-8在 jdbc 连接器中指定,因为 jdbc 连接器不支持utf8mb4.
像这样写你的sql语句(需要添加allowMultiQueries=true到jdbc连接器):
'SET NAMES utf8mb4;INSERT INTO Mytable ...';
这将确保与服务器的每个连接character_set_client,character_set_connection,character_set_results都是utf8mb4.
尝试通过 JDBC 将 UTF-8 插入 MySQL 时出现“乱码”的更多相关文章
- Mybatis插入MySQL数据库中文乱码
Mybatis插入MySQL数据库中文乱码 在dataSource.properties配置文件中设置useUnicode=true&characterEncoding=utf-8编码即可. ...
- Mybatis新增mysql时中文乱码
Mybatis新增mysql时中文乱码 1.设置数据库连接的编码(jdbc.properties) jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:my ...
- Mybatis + Mysql 插入数据时中文乱码问题
近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql. 今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱 ...
- mysql中插入中文时显示乱码
在插入mysql的时候参数是中文的时候显示的是???乱码,这个是由于没有配置字符编码引起的 只要在SqlMapconfig.xml文件中加上<property name="url&qu ...
- mysql插入数据时,中文乱码
MySQL 插入数据时,中文乱码问题的解决(转) 当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1 ...
- 迁移Windows下的MySQL时字符乱码问题
我们常常会直接复制一份MySQL的Data文件夹到新的环境下,正常情况下重新启动MySQL就可以使用.但有时也会遇到些问题: 1.程序訪问时提示找不到表,实际表已经存在 这样的情况是因为数据库全部者可 ...
- oracle 使用occi方式插入数据时中文乱码
这个是由于数据库的编码格式和我们输入的编码格式不一致导致的. 我们使用c++插入数据时数据库的中文显示??(即乱码),但同样的数据使用navicat进行插入却显示正常. 因此,问题并不是处在服务器端的 ...
- 关于JAVA插入Mysql数据库中文乱码问题解决方案
方案一:在创建client的时候,指定使用的编码方式 具体如下: conn = DriverManager.getConnection("jdbc:mysql://localhost:33 ...
- ssm框架插入mysql数据库中文乱码问题解决
1. 检查web.xml <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-n ...
随机推荐
- 17 shell break与continue
使用 while.until.for.select 循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用 break 或者 continue 关键字. 在C语言.Python.Ja ...
- DawgCTF wp(re和crypto)
简单写写思路,想看详解的..我脚本有些丢失了..师傅请移步. 挂了个vpn,算正式打这种国际赛,全是英文.上去打了两天,昨晚晚上划水了一晚上补作业...,re那时候写出来三道,Potentially ...
- 使用Hugo框架搭建博客的过程 - 主题配置
前言 博客部署完成后,恭喜你可以发表第一篇:Hello world!但是LoveIt这么好用的主题,不配置一番可惜了. 基本功能配置 主题配置最好参考已有的配置,比如LoveIt作者写的介绍,还有主题 ...
- 题解 SP3591 PATHEADS - Patting Heads
类似桶排 先看有多少头奶牛抽出这个数 再看这个数的奶牛能拍多少人的头(别忘了-1,自己不能拍自己) 最后根据输入输出 110ms #include<bits/stdc++.h> using ...
- SQLITE数据库不支持远程访问
SQLITE数据库不支持远程访问 import sqlite3 conn=sqlite3.connect("dailiaq.db") cur=conn.cursor() def c ...
- spring pom文件报错:提示no declaration can be found for element 'dubbo:service'.
转自:http://blog.csdn.net/happylife_haha/article/details/52755425 pom文件报错:The matching wildcard is str ...
- spring-3-spring整合mybatis
版本和依赖 MyBatis-Spring 需要以下版本: maven依赖 <dependency> <groupId>org.mybatis</groupId> & ...
- linux删除命令
Linux下的命令,删除文件夹下的所有文件,而不删除文件夹本身rm -rf *
- 记一次lombok踩坑记
引言 今天中午正在带着耳机遨游在代码的世界里,被运营在群里@了,气冲冲的反问我最近有删生产的用户数据的吗?我肯定客气的回答道没有呀?生产的数据我怎么能随随便便可以删除,这可是公司的红线,再说了我也没有 ...
- JavaScript之DOM、DOM树
一 DOM JavaScript操作网页的接口,全称为"文档对象模型"(Document Object Model). 有这几个概念:文档.元素.节点 整个文档是一个文档节点 每个 ...