加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

关于 MySQL 中文乱码问题的解决方案

发布时间:2020-12-12 02:19:38 所属栏目:MySql教程 来源:网络整理
导读:MYSQL经典问题: (ERROR 1366 (HY000): Incorrect string value:'xD5xD4' for column 'name' at row 1) 网上有好多解决中文乱码的贴,大致都讲的是修改 %MYSQL_DIR%/my.ini default-character-set=gbk 什么的 我试过了,不起作用. (可能是我没处理到位) 下面是

MYSQL经典问题:
  (ERROR 1366 (HY000): Incorrect string value:'xD5xD4' 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:MySQLsharecharsets
+--------------------------+--------------------------+

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

方法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:MySQLsharecharsets
+--------------------------+--------------------------+

此时编码已经一致,但是,对数据库中的表进行插入中文字符操作,仍然会报 : 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'");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读