mysql中插入表数据中文乱码问题的解决方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

mysql中插⼊表数据中⽂乱码问题的解决⽅法
⼀、问题
开发中遇到将其它数据库数据插⼊到mysql数据库表中⼀直会报类似如下错误:
Incorrect string value: ' E6 88 91' for column 'name' at row 1
⼆、分析
1.我先去查了两个数据库表中此字段对应的类型都是 varchar,所以不存在类型不⼀致导致插⼊报错的问题。

2. 排除字段类型不⼀致导致的错误后,我猜测是中⽂乱码问题,然后插⼊纯英⽂数据发现没有报错,所以确定了是中⽂乱码问题。

然后⽹上百度发现是mysql默认的编码问题导致的中⽂乱码。

三、解决⽅案
1. 检查本地mysql安装⽂件⽬录下的my.ini配置⽂件,服务器和客户端的默认编码⽅式是否是utf8
[mysqld]
# 服务端使⽤的字符集默认为UTF8
character-set-server=utf8
[client]
# 设置mysql客户端连接服务端时默认使⽤的端⼝
default-character-set=utf8
2.上⼀步⽆误后,打开命令⾏,输⼊:net start mysql ,启动mysql服务;
显⽰“服务已经成功启动”之后,输⼊命令“mysql”,使⽤数据库;
查看数据库表的字符集编码格式:输⼊命令 “ show create table test.xtt_test_copy; ”;
如上图所⽰,发现默认是"latin1"并不是“utf8”,需要继续⼿动修改,输⼊命令 “ ALTER TABLE test.xtt_test_copy CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ”,继续输⼊命令 “show create table test.xtt_test_copy; ”查看默认数据库表的字符集编码
改为了“utf8”;
查看数据库的字符集编码格式:输⼊命令 “show creat database test; ”;
如上图所⽰,发现默认,是"latin1"并不是“utf8”,需要继续⼿动修改,输⼊命令 “ ALTER DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;”,继续输⼊命令 “SHOW CREATE database test; ” ,查看默认数据库表的字符集编码改为了“utf8”;
3. 最后,重启服务就可以了 ~
mysql> net stop mysql;
mysql> net start mysql;
在我们平时使⽤mysql的过程中,经常会碰到中⽂乱码的情况,根据平时的⼯作经验我总结归纳了以下四个需要注意的地⽅:
1. mysql启动时的字符集,在myini⽂件中配置 default-character-set=字符集 ,放在,[WinMySQLadmin]之上;
2. 数据库建表的过程中设置字符集,在CREATE语句最后的 CHARSET=字符集语句中设置;
3. 在驱动url中的选项中设置字符集,jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=字符集;
4. 在web显⽰页中设置显⽰的字符集, <%@ page contentType="text/html; charset=字符集" language="java"
import="java.sql.*" errorPage="" %>在servelt中则是response.setContentType("text/html;charset=字符集");
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。

相关文档
最新文档