原标题:Windows环境下MySQL中文显示乱码的三种解决方案
点击上方“蓝字”可以关注我们哦
|本文来自:ITPUB博客
|作者:Hoegh
|原文链接:http://blog.itpub.net/30162081/viewspace-2127822/
最近在将数据从Oracle迁移到MySQL的过程中,遇到一些问题,其中就包括中文字符显示乱码。
数据导入成功之后,中文字段内容无法正常显示。后来才发现客户端的字符集设置是对的,服务器端的字符集设置不支持中文字符。
后来经过测试发现,我们可以通过三种方法解决这个问题,按照从低到高的级别分别是:
表级
数据库级
服务器级
1.测试环境 Windows Server 2008 r2+MySQL Community Server (GPL) 5.7.16
我是在Windows Server 2008 r2环境下进行测试,创建了测试数据库hoegh。
我们看到hoegh数据库的默认字符集是latin1。
2.create table设置DEFAULT CHARSET参数
首先我们创建测试表hoegh,分别向表中插入一条英文信息和中文信息。
我们发现包含中文的记录插入失败,通过show create table语句可以看到表的默认字符集为latin1,不支持中文。
接下来,我们重建测试表hoegh并设置DEFAULT CHARSET为utf8,然后向表中插入一条英文信息和中文信息。
我们看到插入过程没有报错,也能正常查询。
3.create database设置CHARACTER SET参数
我们重建测试库hoegh,并设置CHARACTER SET参数。然后,重建测试表hoegh并插入两条记录。
我们看到插入过程没有报错,也能正常查询。
此时,为了方便对比,我们查看一下系统的字符集参数。
我们看到character_set_server参数为latin1,这表明当前服务器端的字符集为latin1。接下来,我们就通过修改参数文件来修改这个参数。
4.配置my.ini中的character_set_server参数
通过直接配置my.ini方式修改mysql的服务器端字符集,这样就可以一劳永逸。首先我们找到配置文件,在里面添加一行记录——character-set-server=utf8。
default-character-set=utf8
[mysqld]
max_connections=200
default-storage-engine=INNODB
basedir =E:mysql-5.7.16-winx64bin
datadir =E:mysql-5.7.16-winx64data
port = 3306
autocommit=0
character-set-server=utf8
需要注意的是,上述配置中default-character-set=utf8是针对客户端的设置,而character-set-server=utf8是针对服务器端的设置。
接下来,我们重启一下MySQL服务,查看数据库的字符集参数。
我们看到character_set_server已经成功设置为utf8。然后我们重建测试数据库hoegh,并重复之前的建表语句。
我们看到一切正常,搞定!
最后强烈建议大家使用utf8!号称万国码!
我知道一种学习
○
责任编辑: