解决方案 »
- MySql导出数据库时拒绝访问。在dos环境下
- centos5.5下mysql启动失败提示:Starting MySQL.Manager of pid-file quit without updating f
- repair table 里的行数问题
- 有关MySQL Server不能远程访问的问题
- 使用navicat9连接localhost报错
- mysql导入数据
- 模糊查询的问题
- 如何将查询结果存为另一个表
- mysql修改root密码后无法登陆,怎么破
- linux下wordpress站点mysql_connect() no such file...
- mysql创建事件
- c#用mysqldrivercs连接mysql数据库带参数的查询问题= =求大神解救
至少工具中没有实现,应该是字符集设置上有问题。按下贴中方法检查字符集设置。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
一个字符算一个char,所以char(64)其实是可以保存64个汉字的。
在我们先前的项目中,没有设置字符集,通过调试发现默认是latin1。而我们实际insert到数据库时,用的是UTF8编码,一个汉字占三个字节。
在保存数据时,数据库收到UTF8编码的字符串之后,把每个汉字(三个字节)当作三个latin1编码的字符保存。
在读取数据时,程序收到latin1编码的字符后,每三个字符当作三个字节,解析成一个UTF8编码的汉字。
这样看起来也没有乱码,但浪费了三倍的存储空间。
后来我们新项目用C#去访问先前的数据库,看起来乱码了,但其实这才是正确的。按照我在顶楼那些设置,已经可以正确了。2、关于navicat工具。
在我们先前的项目中,navicat工具选项被强制设置为UTF8编码。其实这跟先前程序的错误是一样的。
在保存数据时,数据库收到UTF8编码的字符串之后,把每个汉字(三个字节)当作三个latin1编码的字符保存。
在读取数据时,程序收到latin1编码的字符后,每三个字符当作三个字节,解析成一个UTF8编码的汉字。
为解决这个问题,只要在“连接属性”中,不要强制设置编码,勾上“使用MySQL字符集”即可。
区别很明显。
如果强制设置编码,则show variables like 'char%'显示为latin1,转码的动作是由navicat在客户端完成。
而设置“使用MySQL字符集”,则show variables like 'char%'显示为utf8,转码的动作是由MySQL在数据库服务中完成。