帮助中心 >  技术知识库 >  数据库 >  数据库管理 >  MySQL数据库经典错误 九 数据库总会出现中文乱码的情况

MySQL数据库经典错误 九 数据库总会出现中文乱码的情况

2018-11-08 20:23:07 3470

数据库总会出现中文乱码的情况

有同学经常会问,为什么我的数据库总会出现中文乱码的情况。一堆中文乱码不知道怎么回事?当向数据库中写入创建表,并插入中文时,会出现这种问题。此报错会涉及数据库字符集的问题。

解决思路:对于中文乱码的情况,记住老师告诉你的三个统一就可以。还要知道在目前的 MySQL 数据库中字符集编码都是默认的 UTF8。

处理办法:

  • 数据终端,也就是我们连接数据库的工具设置为 utf8。

  • 操作系统层面,可以通过 cat /etc/sysconfig/i18n 查看,也要设置为 utf8。

  • 数据库层面,在参数文件中的 mysqld 下,加入 character-set-server=utf8。

Emoji 表情符号录入 MySQL 数据库中报错:

Caused by: java.sql.SQLException: Incorrect string value: ‘😗🅒 for column ‘CONTENT’ at row 1 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734) 
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) 
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)

解决思路:针对表情插入的问题,一定还是字符集的问题。

处理方法:我们可以直接在参数文件中,加入:

vim /etc/my.cnf 
[mysqld] 
init-connect=’SET NAMES utf8mb4′ 
character-set-server=utf8mb4

注:utf8mb4 是 utf8 的超集。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: