String sql;
sql = "insert into table1(field1) values('为什么乱码')";数据库用mysql, 在sql语句里直接写中文,写进数据库后,再读出来乱码,如何解决?

解决方案 »

  1.   

    老问题.....写进去转换为latin1
    gb = new String(iso.getBytes("GB2312"),"ISO-8859-1"); 取出来转换为gb2312
    gb = new String(iso.getBytes("ISO-8859-1"),"GB2312"); 
      

  2.   

    不改mysql,只改java代码,可以实现不?
      

  3.   

    或者是全部编码都用utf8,也不用转换来转换取了....
      

  4.   

    楼上的方法虽然也可以,但是这样不好,因为这样在数据库里看到的还是乱码,不利于调试
    mysql的default charset是latin1,改为utf-8是比较理想的办法
      

  5.   

    楼上的说法有问题...mysql在客户端看到是乱码,那要看你是用什么东西看(mysql命令行客户端默认的是latin1的编码,如果是用mysql Query来看是utf8的编码),你用默认的是utf8的工具来看latin1的编码当然是乱码了....
      

  6.   

    楼上地说的有道理,但是也有问题
    1.用uft-8的工具来看latin1的编码不一定是乱码,编码方式只是一种对byte的解释方法,如果String本身是用utf-8编的码然后再用latin1重新encode为latin1,那么用uft-8的工具来看,它仍然是好的
    2.你用latin1来保存中文时用utf-8和latin1的查看工具都不能看到正常文字,只有用unicode的察看工具才能正常看到中文
      

  7.   

    mysql 数据库里可能是乱码 把mysql中的字符集改成gb2312 或utf-8 就ok