MYSQL中文乱码解决:

  
重点:考虑MYSQL的数据传输问题:
一:
先介绍MYSQL的字符集:
character-set-server:服务器字符集
character-set-database:数据库字符集。
character-set-table:数据库表字符集。
优先级依次增加。所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。
character-set-client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。
character-set-results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。
在客户端,如果没有定义character-set-results和character_set_connection,则采用character-set-client字符集作为默认的字符集。所以只需要设置character-set-client字符集。
要处理中文,则可以将character-set-server和character-set-client均设置为gbk,如果要同时处理多国语言,则设置为UTF8。

二:
关于MySQL的中文问题 :
本质原因是:客户端和服务器端的编码不匹配
主要体现在:
character_set_client:客户端的字符集。
character_set_results:结果字符集。
character_set_connection:连接字符集。
三个方面的不匹配

解决方法:
(1)服务器端设置
把my.ini下的latin1 改成 utf8(共有两处)
character-set-server=utf8
default-character-set=utf8
mysql\data\performance_schema下的db.opt改成:
default-character-set=utf8
default-collation=gbk_chinese_ci
这样在CMD窗口就可以看见:
mysql> show variables like 'char%';
+--------------------------+-----------------------------------+
| Variable_name            | Value                             |
+--------------------------+-----------------------------------+
| character_set_client     | utf8                              |
| character_set_connection | utf8                              |
| character_set_database   | utf8                              |
| character_set_filesystem | binary                            |
| character_set_results    | utf8                              |
| character_set_server     | utf8                              |
| character_set_system     | utf8                              |
| character_sets_dir       | D:\profsoft\mysql\share\charsets\ |
+--------------------------+-----------------------------------+
到此为止,服务器端设置完毕
三:
客户端设置:
如果客户端是SQL MANAGER(客户端是JAVA程序也是一样的,只要数据库客户端和服务器端通信格式保持一致,就不会出现乱码的问题)
假如SQL MANAGER中指定了与MYSQL数据库的CLIENT通信为:latin1,而MYSQL数据库本身的CLIENT编码为:utf8时,就会出现中文乱码错误,
所以SQL FOR MANAGER创建数据库时要设置好编码,一般默认的编码是:latin1,如果没设置编码,那么就算在SQL  MANAGER
的SQL WINDOW中写set character_set_client=utf8;set character_set_connection=utf8;set character_set_results=utf8也无济于事,
因为数据库编码已经确定了,更改不过来.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值