小新... 发表于 2007-5-14 16:41

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)?

iptton 发表于 2007-5-14 18:28

你的数据库怎么移的?
是 用phpmyadmin 导出吗?


还有,你的MYSQL的默认字符集是什么?
这些都有关的

小新... 发表于 2007-5-14 20:17

由于用的是MyISM数据表,所以是直接复制的(参考过“MySQL5 权威指南杨晓云等译“,这是允许的),没有使用phpMyadmin

与MYSQL默认字符集相关么?我没改过,应该都是Latin1的吧?而且查询之前已经用"set names 编码方式"更改过了,应该跟这没关系吧?

iptton 发表于 2007-5-14 21:20

好像有关系....

没有试过直接移数据文件这种方法

hjack 发表于 2007-5-19 11:23

为什么不用dump呢/

dasonch 发表于 2007-5-20 23:35

原帖由 hjack 于 2007-5-19 03:23 发表
为什么不用dump呢/

都说了,用MyISM表可以用copy paste大法,方便~~~~~

PS:我已经试验过了,在XP下新建一MyISM表,utf8编码,再建一列,CHAR(20),同样设为utf8。
  然后用命令行方式查询,乱码;
  先输入“set names utf8",再查询,乱码;
  若先输入“set names gbk",再查询,则正常。

  可见,乱码的产生与Windows系统有关,跟数据库本身无关~~~

iptton 发表于 2007-5-21 08:06

分别在linux 和 windows 下用这个命令看看……


SHOW VARIABLES LIKE ‘character_set_%’;


印象中,影响编码的不只是数据库的编码,还有什么“传送编码”
character_set_server
character_set_connection
character_set_client
……

这些应该都会有影响
在WIN下安装mysql可能你选了 latin

dasonch 发表于 2007-5-21 11:07

早查过了,它们的编码设置都一样,只是奇怪稍为设置下Linux就正常,而Windows就不行

hjack 发表于 2007-6-8 21:34

默认的myisam的确是有这三个文件,可以通过楼主说的方式复制。

但当数据量超过200W行时,myisam性能就会很大的下降。同时myisam出故障的机率相比innodb大很多。

用innodb不能使用复制的方法。
但性能上会比myisam好。

而且mysqldump也不会不方便呀。
页: [1]
查看完整版本: MySQL中文显示问题