想整理一篇中文乱码的贴子。希望能从各位得到一些对各种乱码症状的补充。比如 mysql windows中DOS下中文乱码,php中GBK显示乱码等现象。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx提供症状即可,如同时有解决方法更佳。

解决方案 »

  1.   

    学习一下..其实我觉得MySQL的乱码问题来来去去也是那么两三个原因..
      

  2.   

    可以看看我提供的 mysql 命令行下 显示 中文字符 问题:http://topic.csdn.net/u/20090512/16/1f8c65cf-e2fc-4a9f-b95e-950de5871dde.html
    Mysql 默认字符设置为 gbk 
    在Mysql query browser 可以正确 显示 中文。但是命令行下: 
    mysql> status 
    -------------- 
    C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe  Ver 14.14 Distrib 5.1.30, 
    for Win32 (ia32) Connection id:          1 
    Current database:      test 
    Current user:          root@localhost 
    SSL:                    Not in use 
    Using delimiter:        ; 
    Server version:        5.1.30-community MySQL Community Server (GPL) 
    Protocol version:      10 
    Connection:            localhost via TCP/IP 
    Server characterset:    gbk 
    Db    characterset:    gbk 
    Client characterset:    gbk 
    Conn.  characterset:    gbk 
    TCP port:              3306 
    Uptime:                22 min 39 sec Threads: 1  Questions: 6  Slow queries: 0  Opens: 15  Flush tables: 1  Open tabl 
    es: 8  Queries per second avg: 0.4 
    -------------- mysql> select * from Course; 
    +-----+--------------+------+---------+ 
    | Cno | Cname        | Cpno | Ccredit | 
    +-----+--------------+------+---------+ 
    | 1  |      | 7    |      4 | 
    | 2  |      | NULL |      2 | 
    | 3  |      | 1    |      4 | 
    | 4  |      | 6    |      3 | 
    | 5  |    | 7    |      4 | 
    | 6  | Java | NULL |      2 | 
    | 7  |      | 6    |      4 | 
    +-----+--------------+------+---------+ 
    7 rows in set (0.55 sec) 
    不能 显示 中文。正确的应该为: 
    Cno | Cname        | Cpno | Ccredit | 
    +-----+--------------+------+---------+ 
    | 1  | 数据库系统  | 5    |      4 | 
    | 2  | 高等数续    | NULL |      2 | 
    | 3  | 信息系统    | 1    |      4 | 
    | 4  | 操作系统    | 6    |      3 | 
    | 5  | 数据结构    | 7    |      4 | 
    | 6  | Java程序设计 | NULL |      2 | 
    | 7  | 编译原理    | 6    |      4 | 
    mysql> show full columns from Course; 
    +---------+--------------+----------------+------+-----+---------+-------+------ 
    ---------------------------+---------+ 
    | Field  | Type        | Collation      | Null | Key | Default | Extra | Privi 
    leges                      | Comment | 
    +---------+--------------+----------------+------+-----+---------+-------+------ 
    ---------------------------+---------+ 
    | Cno    | varchar(10)  | gbk_chinese_ci | NO  | PRI | NULL    |      | selec 
    t,insert,update,references |        | 
    | Cname  | varchar(50)  | gbk_chinese_ci | YES  |    | NULL    |      | selec 
    t,insert,update,references |        | 
    | Cpno    | varchar(10)  | gbk_chinese_ci | YES  | MUL | NULL    |      | selec 
    t,insert,update,references |        | 
    | Ccredit | smallint(10) | NULL          | YES  |    | NULL    |      | selec 
    t,insert,update,references |        | 
    +---------+--------------+----------------+------+-----+---------+-------+------ 
    ---------------------------+---------+mysql> set names 'latin1'; 
    mysql> select * from Course; 
    +-----+----------+------+---------+ 
    | Cno | Cname    | Cpno | Ccredit | 
    +-----+----------+------+---------+ 
    | 1  | ????    | 7    |      4 | 
    | 2  | ????    | NULL |      2 | 
    | 3  | ????    | 1    |      4 | 
    | 4  | ????    | 6    |      3 | 
    | 5  | ?????    | 7    |      4 | 
    | 6  | Java???? | NULL |      2 | 
    | 7  | ????    | 6    |      4 | 
    +-----+----------+------+---------+ 
    7 rows in set (0.20 sec) mysql> show full columns from Course; 
    +---------+--------------+----------------+------+-----+---------+-------+------ 
    ---------------------------+---------+ 
    | Field  | Type        | Collation      | Null | Key | Default | Extra | Privi 
    leges                      | Comment | 
    +---------+--------------+----------------+------+-----+---------+-------+------ 
    ---------------------------+---------+ 
    | Cno    | varchar(10)  | gbk_chinese_ci | NO  | PRI | NULL    |      | selec 
    t,insert,update,references |        | 
    | Cname  | varchar(50)  | gbk_chinese_ci | YES  |    | NULL    |      | selec 
    t,insert,update,references |        | 
    | Cpno    | varchar(10)  | gbk_chinese_ci | YES  | MUL | NULL    |      | selec 
    t,insert,update,references |        | 
    | Ccredit | smallint(10) | NULL          | YES  |    | NULL    |      | selec 
    t,insert,update,references |        | 
    +---------+--------------+----------------+------+-----+---------+-------+------ 
    ---------------------------+---------+ 
    4 rows in set (0.11 sec) mysql> show variables like 'char%'; 
    +--------------------------+---------------------------------------------------- 
    -----+ 
    | Variable_name            | Value 
        | 
    +--------------------------+---------------------------------------------------- 
    -----+ 
    | character_set_client    | gbk 
        | 
    | character_set_connection | gbk 
        | 
    | character_set_database  | gbk 
        | 
    | character_set_filesystem | binary 
        | 
    | character_set_results    | gbk 
        | 
    | character_set_server    | gbk 
        | 
    | character_set_system    | utf8 
        | 
    | character_sets_dir      | C:\Program Files\MySQL\MySQL Server 5.1\share\chars 
    ets\ | 
    +--------------------------+---------------------------------------------------- 
    -----+ 
    8 rows in set (0.08 sec) 当前代码页 是936 (ANSI/OEM - 简体中文 GBK) 
    期待解决。
      

  3.   

    在安装MYAQL 时选着GB2132编码,同时把控制台的选项也选上就可以了,有时候也是很怪,前几天做的一个,一开始不行,重装几次突然就好了
      

  4.   

    Uinx 下的乱码怎么解决呢?
      

  5.   

    将mysql设置为utf-8的,然后通过jdbc往里面写gb2312的,在mysql里看就是乱码
      

  6.   

    将mysql设置为utf-8
    使用数据库时候使用,phpmyadmin,好用多了!
      

  7.   

    好好看一下文档, 就不会有这困扰了.90%是连接(客户端)字符集设置错的原因,
    所谓连接字符集,就是告诉mysql, 你的应用环境是什么编码, mysql自动将服务端的编码转换成客户端编码.所以大家不要去考虑服务端到底什么编码, 什么default、server、db、column 字符集统统不要去管它。除非是latin1字符集.你要做的,是确认,你应用环境的编码是什么环境,所谓的应用环境,就是你开发语言或者是接口软件,如果无法确认,无非就几种 gbk, ucs2,UTF8
    依次set names xxx, 碰到那个是,就OK了。
      

  8.   

    加入一句话 request.getEnconding("GB2312");
      

  9.   

    用jsp提交数据到数据库,连接数据库没加useUnicode=true&setcharacterEncoding=gb2312;数据库显示信息会出现乱码;
      

  10.   


        $conn = mysql_connect("192.168.1.133", "root", "123456") or
            die("Could not connect: " . mysql_error());    $program_char = "utf8";    $conn.mysql_select_db("test");
        //$conn.mysql_query('SET @@character_set_results = "'.$program_char.'"');
        
        mysql_set_charset($program_char,$conn); 
        $charset = mysql_client_encoding($conn);
        printf ("current character set is %s <br>", $charset);
        $result = mysql_query("SELECT id, task_no,pack_path FROM tb_workplan where id = 1 ",$conn);
        while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
            printf ("ID: %s <br> task_no: %s  <br> pack_path :%s <BR>", $row["id"], $row[1], $row["pack_path"]);  
        }
        $conn.mysql_free_result($result);
        $conn.mysql_close();楼主以上是一段 5.2 PHP版本以上解决乱码问题的PHP Code
    注意:mysql_set_charset($program_char,$conn); 
      

  11.   

    我也想整理一番,一直没时间。用不用咱们两个谱写一个PDF文档供大家参考?
      

  12.   

    powerbuilder 调用时乱码,不知道怎么解决
      

  13.   

    数据库类型mysql,字符集utf8。
    我在CMD里面使用的时候,set names utf8,但是中文还是乱码了,但是我使用的是set names gbk的时候,中文是正常显示的。
    网页编码gb2312,数据库编码utf8,查询的时候set names gbk,得到的输出中文也是正常的,没有乱码。