数据库连接用useUnicode=true&characterEncoding=ISO-8859-1
insert用PreparedStatement没问题,但是查询用PreparedStatement和Statement都查不到。
我用New String(xxx.getBytes("code1"),"code2");code1和code2用ISO-8859-1,UTF-9,gb2312反复试过都不行,特别是name = new String(name.getBytes("ISO8859_1"),"UTF-8");,控制台已经是中文了,查询还是不行。加上stmt.execute("set names 'gb2312'");或者其他的,也没用,或者直接报错说用like查询,查询的字符集不匹配。mysql的latin1编码不能改,我是租用别人的空间。有没有好的解决方案?

解决方案 »

  1.   

    alter database charset=gb2312;
      

  2.   

    改三个地方完全搞定,我也是前不久遇到这问题
    1:改一下你的MYSQL配置,因为一开始他的默认安装配置编码是latin1(瑞士国家的编码,因为MYSQL是瑞士公司的,当然支持中文),方法如下:找到F:\MySQL\my.ini文件,中间有二句是default-character-set=latin1 改成default-character-set=GBK
    2:在建表的时候最后加default character set gbk(编码设为GBK当然也可为其它,建议为GBK)如CREATE TABLE student (
            name char(20) NOT NULL,
            password char(20) NOT NULL)
            default character set gbk; 
    3:在连接数据库的程序中的URL这样写:Connectioncon=DriverManager.getConnection"jdbc:mysql://localhost:3306/你的数据库名?useUnicode=true&characterEncoding=gbk","root", "你的密码");
    万事OK,改了第1步当然要重新打开一些东东,如DOS窗口(假如你在DOS下建表),还不行的话就不知道咯~_~,%95会OK的
      

  3.   

    "mysql的latin1编码不能改,我是租用别人的空间。?
    那当你用DOS 操作MYSQL时先运行这样一句命令
    "SET NAMES 'GBK';(有没有单引号不记得了)这样一样改了编码,只不过是暂时的,DOS窗口一关就又恢复默认的了
      

  4.   

    下面文章对你会有帮助
    http://www.programmerstudy.com/database/mysql/20084/142.html