使用Navicat存储中文数据出现乱码或者空白的问题。经过一番折腾终于得到解决。 表my_chat设计如下:
在数据库chatroom上右击打开console控制台,输入SHOW VARIABLES LIKE '%character_%'; 可以看到MySQL 相关编码的设置,全部修改为utf8后如下:
若编码不统一可以参照这篇文章修改:MySQL 编码设置http://eagletff.blog.163.com/blog/static/116350928201171543523558 1、编辑MySQL 的配置文件
开始的时候是author与emotion字段中文乱码:
按上述方法,我在自己的my.ini中只找到了[client]和[mysql]两项,按上述方法修改后,保存的时候提示含有unicode字符,于是我另存,替换,但是 在重新启动MySQL 服务的时候一直失败。 最终发现该配置文件重新改回ANSI编码后,再加入上述修改,可正常启动MySQL 。 新的问题出现:字符类型为varchar的字段中文显示为空白(author和emotion字段),
此法不奏效。 网上找到的第二种方法:Navicat for MySQL 显示中文乱码解决办法
最近遇到一个问题,用Navicat for MySQL 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题就的寻求解决之道,百度了好长时间也没解决,网上那些解决办法都不适合我的问题,网上的大多数解决方法是在navicat里右击一个连接,选择连接属性,切换到高级选项卡,去掉“使用MySQL 字符集”前的对勾,在编码里选择utf-8,这种方法对于部分问题可能适合,但是我的乱码问题依然存在,于是乎我又将utf-8改称gbk,gb2312,全都过问题依然粹依旧。 上述方法后半部分跟第一种方法一样,他这里解决了,但是我没能实现。 反而是利用红色部分的方法找到了解决办法。 在navicat里右击一个连接,选择连接属性,切换到高级选项卡,去掉“使用MySQL 字符集”前的对勾,在编码里选择Default 我在编码里选择utf8之后,
查看表时,又出现了空白
最终解决办法是,在最后编码的地方不是选择utf8而是Default。熟悉的中文就回来了!
总结:一般的解决办法两种: 1、修改MySQL 的配置文件在相对应的位置添加如下代码 重启服务。 但是可能导致无法重启,可以把配置文件编码修改为ANSI试试。 2、
在navicat里右击一个连接,选择连接属性,切换到高级选项卡,去掉“使用MySQL 字符集”前的对勾,在编码里选择Default 也有人编码的地方可能是“Current Windows Codepage”,此法不修改my.ini。
注:
要保证不乱码,就必须将三个编码统一:一是网页自身的编码,二是HTML里指定的编码,三是PHP告诉Mysql的编码(包括character_set_client和character_set_results)。
最后贴几个比较有参考意义的文章:
MySQL 编码设置 http://eagletff.blog.163.com/blog/static/116350928201171543523558
Navicat for MySQL 显示中文乱码解决办法http://blog.163.com/chenyao_2000/blog/static/1280109302011431476629/
MySQL 中文乱码解决 http://jingyan.baidu.com/article/e4d08ffdd9bd630fd2f60de6.html
MySQL插入中文显示不了的问题 http://hi.baidu.com/yulewujixian/item/8a2e80ec9be075b52f140b23 PHP和MySQL的编码问题 http://blog.csdn.net/martinkro/article/details/5352474
中文常用编码方式(GBK,GB2312,Unicode) http://blog.sina.com.cn/s/blog_5ac88b350100c2bx.html
UNICODE,GBK,UTF-8区别 http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html |
|