我的Mysql是gb2312编码方式的,然后在jsp页面也是用gb2312
但是往数据库里插入后,在数据库里查询时乱码,从数据库里取出来也是乱码
具体应该怎么做啊

解决方案 »

  1.   

    主要问题是你request的编码方式是GB2312吗?
      

  2.   

    你看下mysql的默认编码是什么的show Variables like '%set%';设置mysql的默认编码
    修改my.ini文件
    加上
    default-character-set=gb2312
      

  3.   

    连接mysql的url加上&useUnicode=true&characterEncoding=gb2312
      

  4.   


    你先用System打印,看查到数据库前有没乱码
    你有没接收参数,如果有要用request.setCharacterEncoding()设置
    设置页面编码另外直接修改mysql配置文件my.ini
    C:\Program Files\MySQL\MySQL Server 5.1\my.ini
    [client]
    port=3306
    [mysql]
    default-character-set=gbk
    在utf-8编码下,把该项设成GBk,在mysql客户端就可以直接输入命令,否则要先在mysql客户端设置set names GBK;因为不这样设,命令会被当做utf-8编码,可能会出错。改变mysql下的编码
    [mysqld]                 为mysql服务# The TCP/IP Port the MySQL Server will listen on
    port=3306
    #Path to installation directory. All paths are usually resolved relative to this.
    basedir="C:/Program Files/MySQL/MySQL Server 5.1/"#Path to the database root
    datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/"# The default character set that will be used when a new schema or table is
    # created and no character set is defined
    default-character-set=utf8
    这里把编码改成utf8
      

  5.   

    你们用的Mysql都是什么编码啊?乱码弄的闹心了
    要Mysql和jsp页面的编码?
    Mysql设为UTF8.jsp页面用gb2312行吗?还是用UTF8?
    不够我可以加分,求解决。
      

  6.   

    先看一下你的mysql是什么编码的,在mysql命令行执行
    show variables like 'character%';
      

  7.   

    现在数据库里全是乱码,都是问号?
    怎么才能把Mysql数据库里的东西回复成中文啊
      

  8.   

    11楼,照你说的做,显示下边的东西
    mysql> show variables like 'character%';
    +--------------------------+--------------------------------------------------
    -----------+
    | 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 (x86)\MySQL\MySQL Server 5.0\sha
    \charsets\ |
    +--------------------------+--------------------------------------------------
    -----------+
    然后该怎么改啊
      

  9.   

    在mysql安装目录下有一个my.ini,把里面的default_character_set的值改成gbk
      

  10.   

    建议全部utf-8 要不然被中文折磨到死
      

  11.   

    做了N遍,楼上的我都试过了,都不好使,折磨我啊
    按照7楼的也还是乱码
    default-character-set=gbk
    default-character-set=utf8
    然后按照16楼的依然乱码,我把这两行换成gb2312,gbk,utf8试了个遍,都是乱码
    现在我的配置是default-character-set=gbk
                default-character-set=utf8
    显示如下:
    mysql> show variables like 'character%';
    +--------------------------+----------------------------------------------------
    -----------+
    | Variable_name            | Value
               |
    +--------------------------+----------------------------------------------------
    -----------+
    | character_set_client     | gbk
               |
    | character_set_connection | gbk
               |
    | character_set_database   | latin1
               |
    | character_set_filesystem | binary
               |
    | character_set_results    | gbk
               |
    | character_set_server     | latin1
               |
    | character_set_system     | utf8
               |
    | character_sets_dir       | C:\Program Files (x86)\MySQL\MySQL Server 5.0\share
    \charsets\ |
    +--------------------------+----------------------------------------------------
      

  12.   

    default_character_set你怎么gbk,utf8都设置啊!
    修改一下数据库的编码
    alter database dbname default character set gbk;
      

  13.   

    20楼的语句执行不了啊
    mysql> alter database dbname default character set gbk;
    ERROR 1 (HY000): Can't create/write to file '.\dbname\db.opt' (Errcode: 2)
    我是按照7楼设置的,怎么改啊?崩溃了!
      

  14.   

    dbname要改成你的数据名名称啊!
      

  15.   

    问一声楼主,你的MySql是不是重装过的?我以前在做php5时重装mysql后出现过乱码的情况(后来解决了)。不知你是不是。
      

  16.   

    alter database dbname default character set gbk; 
    dbname是你的数据库名称。
      

  17.   

    我经常用的是GBK         要不就是UTF-8,很少要你的GB2312,试试看看吧!
             再看看处理页面有没有写
             request.setCharacterEncoding("GBK");
           
            习惯用表单的时候把 method="post" 比较好吧!
      

  18.   

    楼主只需要做到“四个统一”:mysql数据库编码、数据表编码、中文字段编码及调用页面编码一致,再有乱码都难。强烈建议使用UTF8。
      

  19.   

    问题可能出在tomcat上面    tomcat使用的字符 iso-8859-1   建议你在插入和读出的时候 过滤下字符
      

  20.   

    用MYSQL 的修复工具修复下,重新设置GB2312
      

  21.   

    我也遇到过 是编码的问题 后来改用UTF-8就没有问题了
      

  22.   

    还是 UTF-8 吧,我一直是 UTF-8
      

  23.   

    你在jsp页面修改编码方式为utf-8,以为这个是整个亚洲地区是通用的,当然最也在mysql连接数据库那里也设置一下
      

  24.   

    <value>jdbc:mysql://localhost:3306/pushvod?useUnicode=true&amp;characterEncoding=utf-8</value>
      

  25.   

    <property name="url">
    <value>jdbc:mysql:URL?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
    </property>
      

  26.   

    统一用utf-8出错的几率小,为何不用呢 
      

  27.   

    通过MYSQL的设置向导修改默认的字符集为GB2312就好了
      

  28.   

    如果MySQL数据库已经安装好,可以使用下列SQL命令查看MySQL当前的字符集设置: 
    mysql> SHOW VARIABLES LIKE 'character_set_%'; 
    +--------------------------+----------------------------+ 
    | Variable_name | Value | 
    +--------------------------+----------------------------+ 
    | character_set_client | latin1 | 
    | character_set_connection | latin1 | 
    | character_set_database | latin1 | 
    | character_set_results | latin1 | 
    | character_set_server | latin1 | 
    | character_set_system | utf8 | 
    | character_sets_dir | /usr/share/mysql/charsets/ | 
    +--------------------------+----------------------------+ 
    7 rows in set (0.00 sec) mysql> SHOW VARIABLES LIKE 'collation_%'; 
    +----------------------+-------------------+ 
    | Variable_name | Value | 
    +----------------------+-------------------+ 
    | collation_connection | latin1_swedish_ci | 
    | collation_database | latin1_swedish_ci | 
    | collation_server | latin1_swedish_ci | 
    +----------------------+-------------------+ 
    3 rows in set (0.00 sec) 
    set character_set_client =gb2312; set character_set_connection =gb2312; set character_set_database =gb2312; set character_set_results =gb2312; set character_set_server =gb2312; set character_set_system =gb2312; --此处utf-8也可以然后执行:SET collation_server = gb2312_chinese_ci 
    SET collation_database = gb2312_chinese_ci 
    SET collation_connection =gb2312_chinese_ci 执行完之后,请检查mysql下每个数据库,表,字段是否都是gb2312,不是则改过来,这样子就不会出现了
      

  29.   

    查看 MySQL 数据列(column)的字符集。mysql> show full columns from 表名;
      

  30.   

    编码的统一主要在以下三个地方:JSP页面,数据库连接方式,数据库。首先看一下数据库方面的编码设定,有两处需要修改,一个是mySQL的my.ini文件,它位于MySQL Server 安装目录下,打开以后查找character,你会发现default-character-set=gbk这样一行,这里我就要用gbk,所以我就不改了,如果你要统一成其他编码,那么就要修改这里。另外一个地方是,建立数据库表的时候要写成这样。create table `immdb`.`admins`(
    ......
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
    最后这句ENGINE=InnoDB DEFAULT CHARSET=gbk是设置建立的这个表使用的是GBK。下面再看看数据库连接方式上编码需要注意的地方,它在connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/immdb?user=root&password=123456&useUnicode=true&characterEncoding=GBK");
    最后的字符编码被指定为GBK。这样才能与数据库统一,不会在传递过程中发生乱码。再看看JSP页面的编码修改位置,位于<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
    但是还应该注意,如果在JSP页面传递form或者其他值的时候,有中文,那么,你还需要在JSP页面中加入<% request.setCharacterEncoding("GBK");%>(可能是在接收页面设置,不过我都设置了,也不管那么多了,呵呵)
    在servlet中加入request.setCharacterEncoding("GBK");
    response.setCharacterEncoding("GBK");