mysql windows 乱码问题_Windows环境下MySQL中文显示乱码的三种解决方案

原标题: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。

ff99fbdeea6e0d22376947cdcb2da3c0.png

9f496a52330da145db38c15ec177edec.png

我们看到hoegh数据库的默认字符集是latin1。

2.create table设置DEFAULT CHARSET参数

首先我们创建测试表hoegh,分别向表中插入一条英文信息和中文信息。

e34461eb29260d06fa8a803e02f6b471.png

我们发现包含中文的记录插入失败,通过show create table语句可以看到表的默认字符集为latin1,不支持中文。

接下来,我们重建测试表hoegh并设置DEFAULT CHARSET为utf8,然后向表中插入一条英文信息和中文信息。

9cd72f28376ea9552c99041094b25659.png

5a2add250e20e2d767bf0326660076e6.png

我们看到插入过程没有报错,也能正常查询。

3.create database设置CHARACTER SET参数

我们重建测试库hoegh,并设置CHARACTER SET参数。然后,重建测试表hoegh并插入两条记录。

9c2b5efbb3dc136bd1075ab2b392e70b.png

3c800b7138160a8f63eddff93dcae601.png

我们看到插入过程没有报错,也能正常查询。

此时,为了方便对比,我们查看一下系统的字符集参数。

dc3fd64ff6d9cec3a44ec02b0fcbf0a8.png

我们看到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服务,查看数据库的字符集参数。

d6ad7e57c75c84ed5067fbffef97ad90.png

bf343b6f993f07d42054333440b9e646.png

我们看到character_set_server已经成功设置为utf8。然后我们重建测试数据库hoegh,并重复之前的建表语句。

311d8e04d1803b5a7be3a410dfc05155.png

58416bc31b9fbf679185847a8492d841.png

我们看到一切正常,搞定!

最后强烈建议大家使用utf8!号称万国码!

ef04f4f7b7cd5e4eb95a85b29af64672.png

我知道一种学习

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值