最近项目使用到mysql,却突然出现了中文乱码问题,尝试了多种方案,终于解决乱码问题,总结一下解决方案,给遇到相同问题的人一点参考。
1.安装mysqlserver的时候编码集设定有问题
2.创建数据库的时候编码集设定有问题
3.创建表的时候编码集设定有问题
4.客户端的编码集设定有问题
可以通过命令查看编码集:
<code class="hljs sql">show variables like "%char%";</code>
<img alt="这里写图片描述" src="http://img.bitscn.com/upimg/allimg/c150828/1440K005F6250-344L.jpg" title="\" />
常用编码集
1.java中的常用编码UTF-8;GBK;GB2312;ISO-8859-1;<br />
2.对应mysql数据库中的编码utf8;gbk;gb2312;latin1<br />
建议使用utf8格式,utf8可以兼容世界上所有字符
mysql编码集设置命令
注意:如果不是通过my.ini配置文件设置的内容,只在当前状态下有效,当重启数据库服务后失效。所以如果想要不出现乱码只有修改my.ini文件,数据库编码可以在创建数据库时候指定UTF8
<code class="hljs sql"><code class="hljs sql">mysql设置编码命令 SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_database = utf8; SET character_set_results = utf8; SET character_set_server = utf8; SET collation_connection = utf8_bin; SET collation_database = utf8_bin; SET collation_server = utf8_bin;</code></code>
<code class="hljs sql"><img alt="这里写图片描述" src="http://img.bitscn.com/upimg/allimg/c150828/1440K005R0310-4bK.jpg" title="\" />
<code class="hljs sql">设定mysqlserver编码
<code class="hljs sql">设定mysqlserver的编码,需要重新安装mysql服务,过程如下:<br />
1.打开命令提示符(管理员),如果不以管理员身份运行可能会出现错误<br />
2.进入mysql安装目录下的bin目录<br />
3.关闭服务
<code class="hljs sql"><code class="hljs sql"><code class="hljs vbnet">net stop mysql</code></code></code>
<code class="hljs sql"><code class="hljs vbnet">4.卸载
<code class="hljs sql"><code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake">mysqld -remove</code></code></code></code>
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake">5.修改mysql的配置文件,在mysql安装目录下找到my.ini文件<br />
<img alt="这里写图片描述" src="http://img.bitscn.com/upimg/allimg/c150828/1440K005W3440-5a62.jpg" title="\" /><br />
修改配置文件,在配置文件中加入
<code class="hljs sql"><code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver">character-set-server=utf8</code></code></code></code></code>
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver">贴出我的配置文件
<code class="hljs sql"><code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex">[mysqld] #设置字符集 character-set-server=utf8 #这里把路径改改为你的mysql安装目录 basedir=D:\develeper\mysql5.6 datadir=D:\develeper\mysql5.6\data sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES </code></code></code></code></code></code>
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex">我的配置文件下载地址:http://pan.baidu.com/s/1qW3hqri<br />
<img alt="这里写图片描述" src="http://img.bitscn.com/upimg/allimg/c150828/1440K005a50-D330.jpg" title="\" />
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex">6.安装
<code class="hljs sql"><code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake">mysqld -install</code></code></code></code></code></code></code>
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake">7.启动服务
<code class="hljs sql"><code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake"><code class="hljs sql">net start mysql</code></code></code></code></code></code></code></code>
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake"><code class="hljs sql"><img alt="mysql卸载、安装" src="http://img.bitscn.com/upimg/allimg/c150828/1440K0060T3P-I516.jpg" title="\" />
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake"><code class="hljs sql">创建时指定字符集
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake"><code class="hljs sql">1.创建数据库时设定字符集
<code class="hljs sql"><code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake"><code class="hljs sql"><code class="hljs sql">create database testdb default character set utf8;#建立数据库</code></code></code></code></code></code></code></code></code>
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake"><code class="hljs sql"><code class="hljs sql">2.创建表时设定字符集
<code class="hljs sql"><code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake"><code class="hljs sql"><code class="hljs sql"><code class="hljs sql">use testdb; create table student( id char(50) primary key, sname varchar(100) not null, age int )engine=innodb default charset=utf8;</code></code></code></code></code></code></code></code></code></code>
<code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake"><code class="hljs sql"><code class="hljs sql"><code class="hljs sql">3、客户端字符集的设定,通过连接字符串来设定。
<code class="hljs sql"><code class="hljs sql"><code class="hljs vbnet"><code class="hljs cmake"><code class="hljs livecodeserver"><code class="hljs tex"><code class="hljs cmake"><code class="hljs sql"><code class="hljs sql"><code class="hljs sql"><code class="hljs fix">jdbc:mysql://localhost:3306/testdb?characterEncoding=utf8</code></code></code></code></code></code></code></code></code></code></code>