mysql中文乱码问题(转自网易--网站笔记)

ERROR 1366 (HY000): Incorrect string value: '\xB1\xEA\xCC\xE2\xD5\xE2...' for column 'title' at row 2

MYSQL经典问题: 
  (ERROR 1366 (HY000): Incorrect string value:'\xD5\xD4' for column 'name' at row 1)

网上有好多解决中文乱码的贴, 大致都讲的是修改 %MYSQL_DIR%/my.ini default-character-set=gbk 什么的
我试过了, 不起作用. (可能是我没处理到位)

下面是我琢磨了半天,得到的结果, 不知道是否值得提倡, 但目的绝对达到了:

登陆mysql --->

进入相应数据库--->

输入命令: show variables like '%char%';

得到: 
+--------------------------+--------------------------+
| Variable_name      |      Value      |
+--------------------------+--------------------------+
| character_set_client       utf8        
| character_set_connection    utf8 
character_set_database     latin1 
| character_set_filesystem     binary 
| character_set_results       utf8 
| character_set_server      utf8 
| character_set_system      utf8
| character_sets_dir       D:\MySQL\share\charsets\ 
+--------------------------+--------------------------+

如果出现上述情况则需要更改数据库编码: 两种方法, 第一种是一次搞定, 第二种只对当前连接有效,断开连接,恢复更改前状态

方法1: alter database 数据库名 charset utf8;
方法2: set character_set_database = utf8;

再用命令: 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:\MySQL\share\charsets\ 
+--------------------------+--------------------------+

此时编码已经一致, 但是,对数据库中的表进行插入中文字符操作, 仍然会报 : ERROR 1366 (HY000)

---> set character_set_client = gbk; 设置插入时接收的编码为GBK, 这样就可以插入中文了

此时中文字符已经可以插入, 但查询结果却还是乱码, 再更改一处即可:

---> set character_set_results = gbk; 设置输出结果的编码为GBK

注: 这样的设置只对当前连接有关, 连接断开, 这些设置恢复数据库默认设置状态,因此,如果需要,每次连接都得设置!

另外:ERROR 1366 (HY000)错误主要出现于控制台(cmd/黑窗口) 执行SQL语句插入中文时弹出,
用mysql-front 软件插入时不会报字符问题, java通过JDBC连接数据库执行executeUpdate("insert 语句") 中文也能成功插入数据且不会报错!

PHP解决乱码问题只需在连接后加入mysql_query("set names 'gbk'") 就OK!
如: $conn = mysql_connect("localhost","root",""); 
  mysql_query("set names 'gbk'");

在设置了mysql的字符集之后还是会有很抱怨在console输入中文的时候还是会报错。这个主要是windows是中文的,中文系统dos的默认输入输出是gb2312编码,但是之前我们把clientcharacterset设置成了utf8,然后mysql就将我们输入的gb2312的字符当作utf8来处理,然后就导致了错误。

一种解决方法是将clientcharacterset设置成gb2312或者gbk,或者在使用中文前用命令set namesgbk,这样能够暂时的让这个窗口正常接收中文字符。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值