数据乱码问题—更改mysql字符编码

作为一名程序猿,几乎每天都在跟编码格式,乱码作斗争,如何你没有被乱码虐过,你肯定不好意思说你是一枚优秀的程序员。这不是今天我也被乱码血洗了一遍,下面说一下我需要的问题,和解决问题的思路。

忠告:

每次搭建环境的时候一定要统一了编码格式,主要包括:浏览器、IDE(比如eclipse)、数据库(比如Mysql)、jsp页面的编码、服务器(比如Tomcat)和其他(比如我们使用maven等)

今天将工作流模块跑起来之后,发现自己添加的数据,每次读出来都是乱码,而且只要经过自己修改的数据都变成了乱码。然后开始排查。因为其他都没有错而且设计编码格式比较简单,就不在这里详细说明了,本篇文章只是解决一个mysql设置编码格式的问题。

步骤

1.查看了浏览器和IDE的环境,发现都是UTF-8的。
2.然后检查了jsp页面,也都是UTF-8的。注:大家在新建jsp页面的时候,记得修改编程格式(包括引入页面的编码格式)。
3.检查了tomcat的编码,也是UTF-8的。
4.检查mysql编码,发现最后的问题就是出在mysql。

误区

因为使用了Navicat Premium,所以我第一反应就是在客户端修改了数据库的编码,可是发现还是乱码,然后修改了my.ini文件里面的字符集,发现还是没有解决问题。最后发现,修改完my.ini文件之后,必须重启mysql服务,记住不是重新连接数据库,是重启mysql服务,如果你没有使用命令的习惯,就去资源管理器中将mysql服务重启。

正确的解决方案:

一:查看默认字符集

默认情况下,mysql的字符集是latin1(ISO_8859_1),通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令:

mysql> SHOW VARIABLES LIKE ‘character%’;
+————————–+———————————+
| Variable_name | Value |
+————————–+———————————+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir |C:\Program Files\MySQL\MySQL Server 5.5\share\chars
ets\
|
+————————–+———————————+

mysql> SHOW VARIABLES LIKE ‘collation_%’;
+———————-+—————–+
| Variable_name | Value |
+———————-+—————–+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+———————-+—————–+

二:修改默认字符集

(1)简单的修改方法,就是直接修改mysql的my.ini文件中的字符集键值。

(2)使用mysql的命令

 mysql> SET character_set_client = utf8 ;
 mysql> SET character_set_connection = utf8 ;
 mysql> SET character_set_database = utf8 ;
 mysql> SET character_set_results = utf8 ;
 mysql> SET character_set_server = utf8 ;

 mysql> SET collation_connection = utf8 ;
 mysql> SET collation_database = utf8 ;
 mysql> SET collation_server = utf8 ;

三:重启mysql的服务

service mysql restar或者直接在资源管理器中找到mysql服务,直接重启。

附:我们也可以执行 :mysql>alter database mydb character set utf8;来修改已经建立的数据库字符集

总结

其实团体开发需要我们提前统一好各种工具使用的编码格式,这样可以减少很多麻烦,而且我们每个人安装工具的时候也要根据团队要求设置好编码格式。当然,有时候即使我们严格按照要求来设置,依旧会出现乱码,这时候就需要我们根据实际情况来解决,比如在代码中转码之类的,等遇到了再说。

你可能感兴趣的:(mysql,乱码)