前两部分是从mysql和eclipse的角度去解决,在解决的过程当中学到了以前没设计到的查看和修改数据库或数据表的字符集的知识。html
后一部分是掌握了前两步后,进行的新一轮解决问题的探索。其中遇到的细枝末节的bug,也一一解决,最终解决的方法是过在mysql控制台设置数据库的字符集为gbk解决的。可是前两部分的学习,我以为仍是值得了解的。前端
前言:作毕业设计的时候,mysql5.5不知道为何存储中文显示??。因而开始了下面的尝试。mysql
教程:mysql 存储中文显示???,经过修改my.ini解决git
结果:没用,继续???。前两步没问题,可是第三步的时候应该是版本的缘由,个人是mysql5.5,博主的是mysql5.7。个人my.ini文件中client中没有设置无论用。github
收获:这个指令挺好用的(查看数据库当前编码):show variables like ‘%character%’;web
教程:mysql,不能插入中文怎么办?sql
结果:有的有用(在Navicat中用控制台能够插入),有的没用(在mysql中不能插入)。数据库
收获:也算是成功了一半,至少在mysql中虽然不能插入,可是能用Navicat插入,用mysql显示。eclipse
注意事项:1注意保存。svg
2最好提早写好插入的测试语句,否则每次试都要写一次。如
insert t_user (userName, loginName, password, status, roleId) values (‘开心’,‘kaixin’,‘kaixin’,‘2’,1);
insert t_news (newsId,title,content,categoryId) values (73,‘kaix开心’,‘kaixin开心’,2);
教程:mysql 插入中文 ERROR 1366 (HY000): Incorrect string value: ‘\xE7\x8E\x9E\x97’ for column
结果:依然不行。
收获:了解到了1366报错。对查看和修改数据库或数据表的字符集的mysql知识进行了补充。show full fields from news指令来查看表的字符集挺好用的。
教程:eclipse插入数据到MySQL数据库时,出现中文乱码问题的解决方法
结果:无用
收获:对eclipse链接mysql出现中文乱码的解决方法之一有了一个了解,虽然这个对我没用。
教程:mysql如何更改character-set-server默认为latin1
结果:部分有用,部分没用;5.5版本和5.7版本不同;综合了上一个问题的方法一和方法三。要么在mysql中修改mysql的配置,可是这个是短时间的,下次打开又得从新设置;要么修改mysql的my.ini。能够在mysql中修改字符集配置好说,可是修改my.ini就根据版本不一样有不一样的修改。
收获:对mysql的字符集配置有了更深的理解。
经验:把修改数据表的字符集的命令保存到文档,用的时候复制,否则每次打有些麻烦。
set character_set_database=utf8;
set character_set_server=utf8;
set character_set_database=gbk;
set character_set_server=gbk;
set character_set_client=gbk;
set character_set_connection=gbk;
set character_set_results=gbk;
随笔:
在Navicat中有用,在MySQL中报错;
ERROR 1366 (HY000): Incorrect string value: ‘\xBF\xAA\xD0\xC4’ for column ‘userName’ at row 1
查看mysql的字符集:show variables where Variable_name like ‘%char%’;
查看某一个数据库字符集:show create database enterprises;(注:enterprises为数据库)
查看某一个数据表字符集:show create table employees;(注:employees为数据表)
梳理过程:
补充一个字符集的知识点:gbk与utf8
这一部分是回顾整理前两个问题,而后推到下一步怎么办。
用Navicat中的操做,修改数据表的字符集为utf8;
参考教程:mysql,不能插入中文怎么办?
还挺有用的,在Navicat中使用终端输入的时候能够输入中文显示中文;
可是又出现两个新的问题,
第一个是在MySQL仍然不能插入,报出1366错误;
ERROR 1366 (HY000): Incorrect string value: ‘\xBF\xAA\xD0\xC4’ for column ‘userName’ at row 1
第二个错误是在Navicat能够正常显示中文,可是在MySQL中不能显示。
方法一:修改数据库的字符集,在直接修改my.ini。
不可行,可能和版本有关系,个人是5.5版本,教程的版本是5.7;MySQL5.5好像就是不能修改server和database的字符集。这两个的字符集一直都是Latin1;
方法二:修改数据库的字符集,在MySQL中用语句修改,修改字符集为gbk;
参考教程:ERROR 1366 (HY000):Incorrect string value解决方案(亲测)
误打误撞把显示问题显示问题解决了,把utf8编码改成gbk就能够在MySQL正常显示。
同时用MySQL修改server和database的字符集后,还真的能够输入了。
虽然重启以后,这个server和database又是latin1;可是仍是能够输入中文的。
而后我到Java中输入中文,看保存在MySQL是否是中文,结果仍是显示??。我估计和我以前把eclipse中的字符集设置为utf8有关。或者和以前只在控制台修改,没有在my.ini中修改有关。在控制台中修改是临时修改,不能根治。可是个人MySQL5.5就是不能修改client和mysqld的默认字符集,设置了不得做用,在显示中,server和database仍然是latin1.或许我该装MySQL5.7.
建立数据库的时候把字符集设为utf8,保证前端页面编码格式也为UTF-8;
参考教程:解决:JavaWeb项目中向数据库插入中文数据时出现乱码问题
无解,我在my.ini中把字符集设为utf8后,MySQL又开始乱码,因此MySQL5.5中只能设置为gbk.。故此方法仅供参考,我再去想一想其余办法。
参考教程:MySQL5.5闪退解决方法
这一部分是最终版本,请仔细看到最后,就知道怎么解决
比较莫名其妙,不过我想应该是我设置的my.ini起做用了,以前的那些操做误打误撞使问题解决了。此时个人感觉
个人MySQL存在C盘,因此用cd…来退出目录,最后用 cd C:\Program Files\MySQL\MySQL Server 5.5\bin 进入MySQL客户端的目录。
有效。退出后,再用client登陆没有闪退了。
莫名其妙server和database设置成了gbk;
莫名其妙问题解决了,在eclipse中输入中文能够保存到数据库中,而且没有乱码。
介绍text类别:mysql中char,varchar与text类型的区别和选用
次日又闪退,而后用第一天的方法操做,再次可行,可是每次都须要本身启动MySQL,以为好像不能根治。而且database竟然变成了latin1,
网上说是用中文分号结尾致使的,也不知道是否是;
而后用’\c结束这个;有效。
好难找到解决方法,难道没人遇到这个问题?
惟一的一个回答是set names utf8;
个人设置的是gbk,因此我尝试用set names gbk;试试,没用;
show full fields from t_news;
发现个人content中的text类别的collation是latin1_swedish_ci;因此我须要把这个改成utf8_general_ci。
alter table t_news change content content text character set “utf8”;
僵硬,无效,连以前有效的类别都不能插入中文了;可能和我set names utf8;有关
因而我从新把全部的都从头设置一遍。所有设置为gbk。结果解决了
最后没想到是经过在mysql控制台设置数据库的字符集为gbk解决的。
这个讲解不错:https://zhidao.baidu.com/question/136633057177811405.html
完美解决
本人才疏学浅,许多内容请辩证理解。后期会不断更新。