网上流传的这段代码根本就行不通。                           String sql_ = “select * from user where name='刘三'”;
String sql_convert = new String(sql_.getBytes("utf-8"),"gb2312");
System.out.println( sql_convert );

解决方案 »

  1.   

    首先得确认你的工人空间是什么编码方式
    如果是Eclipse中文系统下默认是GBK
    所以根本不用转就能识别中文
    如果你硬要转
     String sql_convert = new String(sql_.getBytes("GBK"),"gb2312");
      

  2.   

    我的默认设置是 utf-8
      

  3.   

    单纯就这段代码来说,是可以转换的
    你先嘚确定你的源代码的编码是什么再转啊 是utf8么?
      

  4.   

     String sql_convert = new String(sql_.getBytes(),"gb2312");
    用这个试试
      

  5.   

    String sql_convert = new String(sql_.getBytes(),"gb2312"); 
    这句话也不行的。
      

  6.   

    如果 sql_convert是基于HTTP协议传过来的值就这样实现
      byte [] b;
      String sql_convert = "select * from user where name='刘三'";
      b = utf8_value.getBytes("8859_1");
      String name = new String(b, "GB2312");   
      System.out.println(name);如果 sql_convert不是HTTP传过来的我就不知道你为什么要转了,直接打印出sql_convert不就行了
      

  7.   

    为什么要转,是因为同样一条SQL语句,用数据库工具能查询出来数据,java却查不出来。(表是GB2312编码存储)。
    我怀疑是传入进去的SQL语句字符编码不正确引起的。
      

  8.   

    传入进去的SQL语句字符编码不正确引起的。
    个人感觉不是这个原因,你debug一下,就知道了。
    你现在表是GB2312编码存储,.....getBytes("ISO8859_1");试试
      

  9.   

    还是不行的。数据库是postgres。表是gb2312编码。java写的源代码是utf-8格式,查询中文的字符根本就查不出来。
      

  10.   


    麻烦你自己再确认一次Window->Preferences->General->WorkSpace 里的 Text file encoding
    和 Window->Preferences->General->Content Type->Text->Java Source File 的 Default encoding 都为UTF-8
    你可以在Default encoding处输入UTF-8后update试试看,Good luck!
      

  11.   

    我检查出来了什么原因。
    。。
    在JAVA中。我无论设置成 GBK 或 UTF8 都不能查询 SELECT * FROM user WHERE name='刘华' 在Postgres数据库。
    原因可能出在于 JDBC连接PostgreSQL中。跟转换字符串无关。
      

  12.   

    byte [] utf8 = "汉字".getBytes("UTF-8");
    上面的代码是得到一个字节数组,数组里面的内容,是,两个UTF-8编码的汉字。byte [] gb2312 = "汉字".getBytes("GB2312");
    上面的代码是得到一个字节数组,数组里面的内容,是,两个GB2312编码的汉字。两个数组的大小应该不相同。向Java平台的转换,我们知道,Java实用的是Unicode编码。String utf8String = new String(utf8,"UTF-8");
    String gb2312String = new String(gb2312,"GB2312");
    上面的代码是把不同编码的内容,向Java平台转换,转换后,可以被Java平台识别。可以让Java平台的编码做中介,完成转换byte [] result = new String(utf8,"UTF-8").getBytes("GB2312");这个结果应该和gb2312是一样的。
      

  13.   

    String sql_ = “select * from user where name='刘三'”;
    这里已经是unicode编码,你把他转为UTF8编码,然后再转成GB2312编码,能不乱码吗?
    而且为什么要转码?好奇怪!
      

  14.   


    其实我也觉的奇怪。因为这条语句在数据库工具中能查出数据的。但是写在JAVA中就查不出数据。
    我怀疑是传入进入的SQL语句编码不对,因为JAVA默认是utf8,所以转成gb2312试看。
      

  15.   

    看看java api doc
    CharsetDecoder
    CharsetEncoder
      

  16.   

    不会跟这两个API有关系的。
    JAVA里的SQL语句还需要转一次再查询吗?