设为首页 加入收藏

TOP

MySQL中文乱码问题的解决
2014-11-24 07:30:40 来源: 作者: 【 】 浏览:2
Tags:MySQL 中文 乱码 问题 解决

MySQL中文乱码问题的解决
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%';
得到: www.2cto.com
+--------------------------+--------------------------+
| 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 www.2cto.com
| 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'");
作者 Jacy liang
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PHP实现对mysql数据库内容分页显示 下一篇MySQL压力测试工具

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)