MySQL中文乱码

来源:互联网 发布:java最好安装在哪个盘 编辑:程序博客网 时间:2024/04/29 19:59
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=gbk; 插入中文数据成功!

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

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

    5.此时,修改set character_set_results=gbk

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

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

 

 
0 0
原创粉丝点击