mysql数据库乱码问题总结

mysql数据库乱码问题总结

ID:6076680

大小:85.31 KB

页数:10页

时间:2018-01-02

mysql数据库乱码问题总结_第1页
mysql数据库乱码问题总结_第2页
mysql数据库乱码问题总结_第3页
mysql数据库乱码问题总结_第4页
mysql数据库乱码问题总结_第5页
资源描述:

《mysql数据库乱码问题总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Mysql数据库乱码总结 今天又独到了Mysql乱码问题,过去总是匆匆的解决了就算了。这次我实在受不了了。每次都是迷迷糊糊的改好的。这次决定好好探索一把,看了很多资料及博客之后才理解了点。先记录下来。如有不对的请指正。1.首先Mysql是在4.0之后才支持多字符集的。所以只有4.0之后才会出现这种问题。编码转换的规则就是,在输入数据时将编码由“客户端编码”转换为“服务器端编码”,输出时将数据由“服务器端编码”转换为“客户端编码”。 MySQL的字符集处理是这样的:1、发送请求。  1)客户端发送

2、请求到服务器端。  2)服务器端会把请求的数据从客户端字符集(character_set_client)转成服务器连接字符集(character_set_connection)。  3)然后服务器会检测存储区域(table,column)的字符集,然后把数据从连接字符集(character_set_connection)转为存储区域(table,column)的字符集,然後再存储或者查询。  2、返回请求。  1)服务器将存储区域(table,column)的字符集转换成服务器连接字符集(cha

3、racter_set_connection)。  2)将服务器连接字符集(character_set_connection)转换成结果字符集(character_set_results),再发送到客户端。 首先我们看下mysql>status;我们可以看到四个字符集的设置。1.改变my.ini文件中的编码可以改变所有的字符集。2.setnames"uf8"可以改变Clientconn这两个字符集。3.建立数据库时的设置编码可以改变DB这个。知道了,原理之后我开始解决今天遇到的问题。1.在其他地方

4、正常显示中文。但是在CMD中不能显示显示乱码。首先我设置了my.ini将字符集全部设置为utf8。个人感觉utf8是趋向标准的。然后数据库建立时设置为utf8.可是看到CMD查询出的是乱码。这是因为CMD.也就是我们熟知的windows下的dos是不支持utf8的。所以我设置输出到客户端编码方式转换成GBK即可。也就是setnamesgbk。ok问题解决。作者JavaNoteMySQL插入数据时,中文乱码问题的解决当向MySQL数据库插入一条带有中文的数据形如 insertintoemploye

5、evalues(null,'张三','female','1995-10-08','2015-11-12','Sales',2000,'是个好员工!'); 出现乱码时,可以使用语句 showvariableslike'character%'; 来查看当前数据库的相关编码集。从上图中可以看到MySQL有六处使用了字符集,分别为:client、connection、database、results、server、system。其中与服务器端相关:database、server、system(永远无法修

6、改,就是utf-8);与客户端相关:connection、client、results。 client为客户端使用的字符集。connection为连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型则按照服务器端默认的字符集设置。database为数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。results为数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。server为服务器安装时指定的默认字符集设定。

7、system为数据库系统使用的字符集设定。 了解了上面的信息我们来分析下乱码的原因,问题出在了当前的CMD客户端窗口,因为当前的CMD客户端输入采用GBK编码,而数据库的编码格式为UTF-8,编码不一致导致了乱码产生。而当前CMD客户端的编码格式无法修改,所以只能修改 connection、client、results的编码集来告知服务器端当前插入的数据采用GBK编码,而服务器的数据库虽然是采用UTF-8编码,但却可以识别通知服务器端的GBK编码数据并将其自动转换为UTF-8进行存储。可以使用如

8、下语句来快速设置与客户端相关的编码集:·setnamesgbk;设置完成后即可解决客户端插入数据或显示数据的乱码问题了,但我们马上会发现这种形式的设置只会在当前窗口有效,当窗口关闭后重新打开CMD客户端的时候又会出现乱码问题;那么,如何进行一个一劳永逸的设置呢?在MySQL的安装目录下有一个 my.ini 配置文件,通过修改这个配置文件可以一劳永逸的解决乱码问题。在这个配置文件中 [mysql]与客户端配置相关,[mysqld]与服务器配置相关。默认配置如下:·[mysql]·default-c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。