MySQL中文乱码

mysql有六处使用了字符集,分别为:client 、connection、database、results、server 、system。
character_set_client  是MySQL 数据库 可以接受数据的编码  
connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。      
database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。   
character_set_results  MySQL 数据库给客户端返回时使用的字符集,如果没有指明,使用服务器默认的字符集。      
server是服务器安装时指定的默认字符集设定。      
system是数据库系统使用的字符集设定。

查看和修改数据库字符集:

show variables like 'character%';
set character_set_results=gbk;
set character_set_client=gbk; 

问题1:安装MySQL数据库时设置编码(utf8),若安装数据库时没有设置,修改方法如下:    

 1 .my.ini中设置:   
[client]

port=3306

[mysql]

default-character-set=gbk【修改这里更改了三个变量:client、results、connection】

2.查看MySQL数据库默认字符集
 

问题2:

    由于安装数据库设置的是utf8格式,但是在dos界面cmd命令行下无法插入中文,也无法显示中文数据(乱码)。



此时,MySQL服务器端可以接受的编码character_set_client =utf8。而客户端的编码格式为gbk。如下图所示:

解决办法如下:
   1.首先查看  MySQL服务器可以接受数据的编码   character_set_client =utf8 。

       2. 而客户端的编码格式为gbk,插入中文会报错。ERROR 1366 (HY000): Incorrect string value: '\xC1\xF5' for column 'name' at row 1。
此时,修改 set  character_set_client = g bk ; 插入中文数据成功!

     3.查询数据,此时中文乱码,显示不正常。

     4.因为客户端(cmd)解码格式为gbk。而此时MySQL数据库向客户端(cmd)返回数据的格式为 character_set_results=utf8

    5. 此时,修改 set  character_set_results = g bk

    6. 查询显示中文数据成功!  

   7.注意:dos(cmd)客户端下设置的client和results编码格式,对SQLyog等软件客户端的编码格式不存在影响。所以这2处编码格式是针对不同的客户端。

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值