是MYSQL的驱动有问题,好像是Statement和PreparedStatement不支持中文,需要修改驱动原码

解决方案 »

  1.   

    连接mysql的url是
    jdbc:mysql://127.0.0.1/mydatabase?useUnicode=true&characterEncoding=GBK这种形式吗?
      

  2.   

    1.将数据库连接串后characterEncoding=iso8859_1
    2.将mysql的编码改成iso8859_1
    3.将你的页面文件设置
    <%@ page contentType="text/html; charset=iso8859_1"...或者全用GBK反正你要同一用一种编码。
      

  3.   

    当然可以啊,而且rs.getString也不用那么麻烦吧,用直接的返回值就可以了
      

  4.   

    连接mysql的url是
    jdbc:mysql://127.0.0.1/mydatabase?useUnicode=true&characterEncoding=GBK这种形式吗?系统只认:
    jdbc:mysql://127.0.0.1/mydatabase?useUnicode=true&characterEncoding=8859-1
    如果是GBK 或  GB2312都报  java.sql.SQLException: Syntax error or access violation message from server: "Unknown character set: 'gb2312'"   不认识字符集的错误!!!!
      

  5.   

    在jsp开始处:<%@ page contentType="text/html; charset=gb2312"%>然后在需要转换编码的变量处调用以下函数:
    public static String UnicodeToChinese(String s){
        try{
           if(s==null||s.equals("")) return "";
           String newstring=null;
           newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
           return newstring;
          }
        catch(UnsupportedEncodingException e)
        {
        return s;
        }
        }
      

  6.   

    你先看看你数据库里面的数据是不是乱码,如果是的按我的来(全改成GBK把)一定不会有问题。
    如果数据库里面上正常的你就只用改<%@ page contentType="text/html; charset=GBK"...
    还有个<meta ... 里面也改成GBK...
      

  7.   

    你用的jdbc的驱动是不是有问题啊
      

  8.   

    1.将数据库连接串后characterEncoding=iso8859_1
    2.将mysql的编码改成iso8859_1
    3.将你的页面文件设置
    <%@ page contentType="text/html; charset=iso8859_1"...
    或者全用GBK反正你要同一用一种编码。查询出来的结果是:&pound;&ordm;T&#338;—&otilde;当然可以啊,而且rs.getString也不用那么麻烦吧,用直接的返回值就可以了
    不行的!!!我试过了!!!!!
      

  9.   

    又是mysql的乱码问题
    mysql因为是瑞典人开发的,默认用的是latin1编码的
    所以你在这种编码格式下插入的数据都会是乱码
    建议:
    先关闭mysql及使用了mysql的所有客户端程序
    在安装目录下的my.ini中修改
    [client]
    default-character-set=gbk
    [mysqld]
    default-character-set=gbk
    也就是在客户端和服务器端的字符编码都改为gbk(假设你用的是这种编码)
    然后打开mysql,新建一个表并出入中文数据
    这样就可以了
      

  10.   

    修改my.ini
    增加
    [mysqld]
    default-character-set=gbk
      

  11.   

    写错了, 应该是gb2312.
    [mysqld]
    default-character-set=gb2312
    或者直接装个高版本的mysql. 安装时会让你选择编码,选gb2312就行了.
      

  12.   

    回复人: amorsuper(amor) ( ) 信誉:100 但是数据库中已经有了数据了!!!修改了字符集会不会影响到依存在的数据!!!
    如果会!!!那这种方法就不可以用了 !!!!!
    因为已存在的数据很重要!!!还有其他方法吗???
      

  13.   

    my.ini应该是windows下的!我的mysql是freebsd unix操作系统下!!!写错了, 应该是gb2312.
    [mysqld]
    default-character-set=gb2312
    或者直接装个高版本的mysql. 安装时会让你选择编码,选gb2312就行了.UNIX下的也是一样的吗???
      

  14.   

    回复人: regis(奔三) ( ) 信誉:100  2005-08-25 16:53:00  得分: 0  那你可以备份你的数据库啊
    利用mysql的“拷贝sql语句到剪贴版”的功能
    把数据库的所有数据都转换成sql语句,保存在一个txt文件里面(如果数据量大可以分成多个)
    然后在新建立的数据库里面执行这些sql语句就行了嘛
      

  15.   

    1.检查mysql version: 4.1以上
    2.检查mysql driver: mysql-connector-java-3.0.9-stable-bin.jar(ps:3.0.8的好像就不行)
    3.建立库或者表时:
    CREATE DATABASE new_db
        CHARACTER SET 'gb2312'
        COLLATE 'gb2312_chinese_ci';
    'gb2312'在控制台下进入mysql:用show charset;来查看
    4.连接时用
    jdbc:mysql://127.0.0.1/mydatabase?useUnicode=true&characterEncoding=gb2312
      

  16.   

    把这2个参数加上useUnicode=true characterEncoding=GB2312
      

  17.   

    什么咚咚还是不行啊
    你怎么操作的?
    修改了mysql的默认编码后要注销一下再添数据的~
      

  18.   

    是什么操作系统?数据库,是linux吗?数据库的版本是什么?
    看看mysql系统信息mysql> show variables;
    +---------------------------------+-------------------------------------+
    | Variable_name                   | Value                               |
    +---------------------------------+-------------------------------------+
    | back_log                        | 50                                  |
    | basedir                         | D:\MySQL Server 4.1\                |
    | binlog_cache_size               | 32768                               |
    | bulk_insert_buffer_size         | 8388608                             |
    | 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              | D:\MySQL Server 4.1\share\charsets/ |
    一般上面标识的几个地方设置为latin1,要经过一个转换函数getBytes("ISO8859-1","gb2312")
    这样就能显示中文(jsp也要设置charset=gb2312)
    设置的方法:(linux下编辑my.cnf文件,windows编辑my.ini文件)
    [mysqld]
    default-character-set=gb2312
      

  19.   

    sorry!错了啊default-character-set=latin1
      

  20.   

    把MySQL的默人字符集改成GBK,一切都解决了
      

  21.   

    characterEncoding=GB2312
    就报:找不到gb2312字符集!一般上面标识的几个地方设置为latin1,要经过一个转换函数
    这样就能显示中文(jsp也要设置charset=gb2312)
    我这样转化了!但是不行啊!!!
    我还getBytes("utf-8","gb2312")也试了!不行啊!!!不行啊!各位老大们!!!!!!!!!
      

  22.   

    救命啊!!!
    我如果调用mysql for win版本就可以查询出汉字。
    但是如果调用 for unix 版本就有问题!在unix 下看到的内容在汉字的地方就是:???
    我的插入语句是这样写的:
    Class.forName("com.mysql.jdbc.Driver").newInstance();
             String url = "jdbc:mysql://192.168.0.211:3306/test?userUnicode=true&characterEncoding=ISO8859-1";
             Connection conn = DriverManager.getConnection(url,"admin","12345678");
             Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                            ResultSet.CONCUR_UPDATABLE);
             String sql="insert into dw1 values('3','和韵');";
    插入是成功的,从数据库中看到的汉字是???,查询出来的结果也是:???
    救命啊!!!大侠!!!
      

  23.   

    如果是mysql4。1以上版本麻烦点吧。
    http://blog.csdn.net/lvyuanfang/archive/2005/02/03/279498.aspx
    我的blog上面有很多情况的说明。