MySQL中文显示问题
用MySQL建了个数据库,用的是默认的MyISM数据表,由于要录入中文数据,故所有CHAR类型的数据我都采用了UTF8格式,现在问题来了:在Linux中用命令行的mysql工具,进行查询时中文乱码,执行“set names utf8;”后,查询正常。
而在Windows下,同样用命令行的mysql工具,在执行“set names utf8;”后,查询仍然乱码,但执行“set names gbk;”后,查询正常。
但我用的可是UTF8呀!而且数据库是直接从Linux下复制到Windows分区的(这就是我用MyISM数据表的原因),为什么在windows下要用GBK编码方式才能正常查询?跟服务器有关吗(用的都是Localhost)? 你的数据库怎么移的?
是 用phpmyadmin 导出吗?
还有,你的MYSQL的默认字符集是什么?
这些都有关的 由于用的是MyISM数据表,所以是直接复制的(参考过“MySQL5 权威指南杨晓云等译“,这是允许的),没有使用phpMyadmin
与MYSQL默认字符集相关么?我没改过,应该都是Latin1的吧?而且查询之前已经用"set names 编码方式"更改过了,应该跟这没关系吧? 好像有关系....
没有试过直接移数据文件这种方法 为什么不用dump呢/ 原帖由 hjack 于 2007-5-19 03:23 发表
为什么不用dump呢/
都说了,用MyISM表可以用copy paste大法,方便~~~~~
PS:我已经试验过了,在XP下新建一MyISM表,utf8编码,再建一列,CHAR(20),同样设为utf8。
然后用命令行方式查询,乱码;
先输入“set names utf8",再查询,乱码;
若先输入“set names gbk",再查询,则正常。
可见,乱码的产生与Windows系统有关,跟数据库本身无关~~~ 分别在linux 和 windows 下用这个命令看看……
SHOW VARIABLES LIKE ‘character_set_%’;
印象中,影响编码的不只是数据库的编码,还有什么“传送编码”
character_set_server
character_set_connection
character_set_client
……
这些应该都会有影响
在WIN下安装mysql可能你选了 latin 早查过了,它们的编码设置都一样,只是奇怪稍为设置下Linux就正常,而Windows就不行 默认的myisam的确是有这三个文件,可以通过楼主说的方式复制。
但当数据量超过200W行时,myisam性能就会很大的下降。同时myisam出故障的机率相比innodb大很多。
用innodb不能使用复制的方法。
但性能上会比myisam好。
而且mysqldump也不会不方便呀。
页:
[1]