先前得一高人指点,做了如下SET NAMES utf8 设置后,问题依然乱码,不知该怎么做,谢谢。-- MySQL dump 10.10
--
-- Host: localhost    Database: zzz
-- ------------------------------------------------------
-- Server version 5.1.7-beta/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;--
-- Table structure for table `student`
--DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int(3) default NULL,
  `name` char(10) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;--
-- Dumping data for table `student`
--
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
LOCK TABLES `student` WRITE;
INSERT INTO `student` VALUES (1,'鎭暚鐜�),(2,'鎴�),(3,'鍥界簿鏄�);
UNLOCK TABLES;
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

解决方案 »

  1.   

    你直接用 mysql 联进去看,检查一下你表的放的数据到底是什么字符集的。
      

  2.   

    mysql> show variables like 'char%'; 
    +--------------------------+----------------------------+ 
    | Variable_name            | Value                      | 
    +--------------------------+----------------------------+ 
    | character_set_client    | gb2312                    | 
    | character_set_connection | gb2312                    | 
    | character_set_database  | gb2312                    | 
    | character_set_filesystem | binary                    | 
    | character_set_results    | gb2312                    | 
    | character_set_server    | gb2312                    | 
    | character_set_system    | utf8                      | 
    | character_sets_dir      | /usr/share/mysql/charsets/ | 
    +--------------------------+----------------------------+ 
    mysql> select * from s2; 
    +------+--------+ 
    | id  | name  | 
    +------+--------+ 
    |    1 | 恭敬现 | 
    |    2 | 我    | 
    |    3 | 国精明 | 
    +------+--------+ 
    3 rows in set (0.00 sec) mysql> show create table s2; 
    +-------+-----------------------------------------------------------------------------------------------------------------------+ 
    | Table | Create Table                                                | 
    +-------+-----------------------------------------------------------------------------------------------------------------------+ 
    | s2    | CREATE TABLE `s2` ( 
      `id` int(3) default NULL, 
      `name` char(10) default NULL 
    ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 | 
    +-------+-----------------------------------------------------------------------------------------------------------------------+ 
    1 row in set (0.00 sec) 
    我完全晕了,不知道该做什么了? 在student数据里有一个s2的数据表。 在linux 图形界面下,我用mysqldump 把数据库备份到 /home/student.sql. 然后用文本编辑器打开,发现中文字体乱码。 然后想导入新的数据库,看看是否还有乱码: 
    新建一个数据库ww. shell>mysql -uroot -p123456 ww </home/student.sql, 
    在图形界面下,进入 数据库, 然后select* from s2 , 发现先前在student.sql文件中乱码,可以在linux图形界面下,正常显示中文! 有两个问题,想问,如果说在llinux命令行格式下的中文,是因为linux命令行不支持中文么? 
    有人说加上lang="zh_cn.gb/8030"什么的,可是我发现我的系统中有那句话,根本不用加。 所以我猜还是在数据库那里出错了,但是我不知道为什么? 
       
    到底哪错了,linux命令行格式下, select * 不显示中文,中文乱码。 在图形界面下的 student.sql中文字体乱码?
      

  3.   

    解释一下,1搂的,是开始建的utf8表,后来以为建成gb2312的就会好了呢,结果不管是什么格式的,在llinux命令行格式下还有 mysqldump 文件中,中文都乱码!
      

  4.   

    1。表中字段的字符集,决定这个字段能存储哪些字符。
    2。连接中的字符集设置,会告诉MYSQL你的客户端用的是什么字符集。
    3。其它字符集变量,让MYSQL明白系统的字符集是什么!假设你的表A中字段 F 字符集为 latin1 , 它能不能存中文? 回答是能!
    比如汉字 "中文" ,GB2312 编码为 D6D0CEC4 , 这时候你向F字段中存的是 D6D0CEC4  ,对MYSQL来说,这没什么不正常。 当你读的时候,自然送这个D6D0CEC4  还给你客户端软件。你客户端软件收到D6D0CEC4 自然会显示为 中文.但如果你的客户端说,我现在用的不是latin1, 是 gb2312 ,或者其它什么,这时候MySQL会根据两边的不同进行转换,这样存入字段F的并不是 D6D0CEC4   所有要看你的字符集设置。比如MYSQL把它存为 D0D6C4Ce, 但当你的客户端读的时候,MYSQL一看两边不同,还会再做一次翻译,传为客户端的仍是 D6D0CEC4   但你直接在 MYSQL 的命令下时,你的字符集设置是什么?上面的原理,我也只能这么解释了。建议你还是好好看一下那个贴子中,有一个直接到MySQL官方文档的一个更为详细的解释。
    建议你贴出以下信息。在linux图形界面下
    show variables like 'char%';
    show create table s2;linux命令行
    show variables like 'char%';
    show create table s2;相信你比较一下两个环境下的 show variables like 'char%'; 就知道为什么了。
      

  5.   

    做完这两步之后:在linux图形界面下
    show variables like 'char%';
    show create table s2;linux命令行
    show variables like 'char%';
    show create table s2; 生成同样的
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client    | gb2312                    |
    | character_set_connection | gb2312                    |
    | character_set_database  | gb2312                    |
    | character_set_filesystem | binary                    |
    | character_set_results    | gb2312                    |
    | character_set_server    | gb2312                    |
    | character_set_system    | utf8                      |
    | character_sets_dir      | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+所以我肯定在linux命令行下,不显示中文,是因为它不支持中文,装了个zhcon,命令行下的输入法,果然没有乱码了,可以显示中文。  在此谢谢ACMAIN_CHM的,提示。但是mysqldump 之后,生成的 txt文档还是不显示中文,数据表里的中文还是乱码?仔细看了那个帖子,还是不知道错在哪了?
      

  6.   

    linux命令行
    show variables like 'char%';
    show create table s2; 显示的效果应该决不是你上面贴出来的那样。 应该是如下格式!mysql> show variables like 'char%';
    +--------------------------+--------------------------------------------------
    | Variable_name            | Value
    +--------------------------+--------------------------------------------------
    | character_set_client     | latin1
    | character_set_connection | latin1
    | character_set_database   | latin1
    | character_set_filesystem | binary
    | character_set_results    | latin1
    | character_set_server     | latin1
    | character_set_system     | utf8
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\cha
    +--------------------------+--------------------------------------------------
    8 rows in set (0.00 sec)mysql> show create table t1;
    +-------+---------------------------------------------------------------------
    | Table | Create Table
    +-------+---------------------------------------------------------------------
    | t1    | CREATE TABLE `t1` (
      `id` int(11) NOT NULL,
      `col` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
    +-------+---------------------------------------------------------------------
    1 row in set (0.14 sec)mysql>
      

  7.   

    mysqldump -h 127.0.0.1 -P 3307 -u username --default-character-set=gbk -p databasename > dumpfile.txt我以前用过上面的这条指令,不行,刚才又用了一次。导出的txt里可以显示中文了。我改过一个叫my.cnf的文件,加了如下两句:
    [mysql]default-character-set=gb2312
    [mysqld]
    default-character-set=gb2312 数据库中的数据,是从一个txt文档中导入的,是不是 在导入的时候,默认把数据库格式变成+--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client    | gb2312                    |
    | character_set_connection | gb2312                    |
    | character_set_database  | gb2312                    |
    | character_set_filesystem | binary                    |
    | character_set_results    | gb2312                    |
    | character_set_server    | gb2312                    |
    | character_set_system    | utf8                      |
    | character_sets_dir      | /usr/share/mysql/charsets/ |          的阿?
      

  8.   

    衷心谢谢ACMAIN_CHM在这两天的帮助,我看出来,这个版块里,就你最热心了,你就是雷锋!哈哈!谢谢了,没啥事,我结贴了,把分都给你!
      

  9.   

    ACMAIN_CHM 谢谢你, 我也大概找到这个问题..
    差不多解决了. 谢谢!~!!!!!