我在建表的时候采用Navicat   UTF—8编码,可是检索的时候怎么无论如何都检索不到结果?如果改成select * from hhh就可以检索到结果,库里肯定是有数据的,各位这个怎么解决,给点建议 
public static void main(String[]args) { 
String keyWord1="韩"; 
String keyWord="hhh"; 
try{ 
keyWord=new String(keyWord1.getBytes("gbk"),"gbk"); 
}catch(Exception e){ 
e.printStackTrace(); 

Connection con = null; 
Statement stmt = null; 
ResultSet rs = null; 
try { 
Class.forName("com.mysql.jdbc.Driver"); 
DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 
String url = "jdbc:mysql://localhost:3306/test"; 
String user = "root"; 
String passwd = "123456"; 
con = DriverManager.getConnection(url, user, passwd); 
stmt = con.createStatement(); 
rs = stmt 
.executeQuery("SELECT name FROM hhh WHERE name like '%" 
+ keyWord1 + "%'"); 
while (rs.next()) { 
System.out.print(rs.getString(1)); 

con.close(); 
stmt.close(); 
rs.close(); 
} catch (Exception e) { 
System.out 
.print("ERROR:............SELECT name FROM weibanju WHERE name like '%" 
+ keyWord + "%'"); 
e.printStackTrace(); 

}

解决方案 »

  1.   

    lz你上面已经把keyword1转换了编码方式
    keyWord=new String(keyWord1.getBytes("gbk"),"gbk"); 
    你在后写sql语句的时候为什么还用keyword1那你上面写的转换是做什么的(最后没却没用)
    executeQuery("SELECT name FROM hhh WHERE name like '%" 
    + keyWord1 + "%'"); 
    应该把keyWord1换成keyWord应该就可以了
      

  2.   

    表是用utf8。查询的时候也得用utf8编码啊。你用gbk就不行啊。最好所有的都用utf8。
      

  3.   

    你的keyWord1 也要转换成utf-8
      

  4.   

    executeQuery("SELECT name FROM hhh WHERE name like '%"
    + keyWord1 + "%'"); keyWord1是什么编码?是否应该换成keyWord?你不是在有这么一行:keyWord=new String(keyWord1.getBytes("gbk"),"gbk");  
      

  5.   

    gbk与UTF—8编码不一致
    new String(str.getBytes("GBK"), "UTF-8");
    看可以不??
      

  6.   

    .executeQuery("SELECT name FROM hhh WHERE name like '%"
    + keyWord + "%'"); 
      

  7.   

    那写错了public class Study {
    public static void main(String[]args) {
    String keyWord1="韩";
    String keyWord="";
    try{
    keyWord=new String(keyWord1.getBytes("gbk"),"gbk");
    }catch(Exception e){
    e.printStackTrace();
    }
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    String url = "jdbc:mysql://localhost:3306/test";
    String user = "root";
    String passwd = "123456";
    con = DriverManager.getConnection(url, user, passwd);
    stmt = con.createStatement();
    rs = stmt
    .executeQuery("SELECT name FROM hhh WHERE name like '%"
    + keyWord+ "%'");
    while (rs.next()) {
    System.out.print(rs.getString(1));
    }
    con.close();
    stmt.close();
    rs.close();
    } catch (Exception e) {
    System.out
    .print("ERROR:............SELECT name FROM weibanju WHERE name like '%"
    + keyWord + "%'");
    e.printStackTrace();
    }
    }
    }这是完整的,可是不能检索出结果为什么?我的表用的是gbk编码
      

  8.   

    keyWord=new String(keyWord1.getBytes("gbk"),"gbk"); ??楼主 你的数据库是什么编码啊?
      

  9.   

    GBK编码,mysql数据库,我知道是编码问题,关键我想知道怎么解决这个问题
      

  10.   

    keyWord=new String(keyWord1.getBytes("gbk"),"UTF-8"); 
      

  11.   

    new String(keyWord1.getBytes("ISO-8859-1"),"GB2312")
      

  12.   

    各位谁有这个环境测试一下再说好不好?我试了好多种编码转化了都不行,用navicat运行sql就能检索出结果,奇怪了。
      

  13.   


    不管编码对不对,起码数据时要有的,你没检索出来,说明你的查询条件有问题,把查询语句打印出来,拷贝到navicat里去执行以下
      

  14.   

    在那里面是可以检索到数据的。用下面语句建个表,Mysql数据库,怎样存取内容呢?我的问题可以这样简单的说了,大家帮忙,谢谢
    CREATE TABLE `hhh` (
      `name` char(100) character set gbk default NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
      

  15.   

    char(100)会出现空格的,你存入不满一百个字符,剩下的会用空格补充
    建议你改成varchar,或者在查询的时候,去空格
      

  16.   

    char(100)会出现空格的,你存入不满一百个字符,剩下的会用空格补充
    建议你改成varchar,或者在查询的时候,去空格
      

  17.   

    char(100)在存入不满100个字符的时候,会用空格填充,所以你查询不到内容建议你改成varchar(100),或者在查询的时候去空格
      

  18.   

    char(100)在存入不满100个字符的时候,会用空格填充,所以你查询不到内容建议你改成varchar(100),或者在查询的时候去空格
      

  19.   

    char(100)在存入不满100个字符的时候,会用空格填充,所以你查询不到内容建议你改成varchar(100),或者在查询的时候去空格
      

  20.   

    char(100)在存入不满100个字符的时候,会用空格填充,所以你查询不到内容建议你改成varchar(100),或者在查询的时候去空格
      

  21.   

    检索内容不关编码的事,而是你的条件问题,既然用*能够全查,那么数据是没有问题的,你加上了条件就没有结果。证明没有符合你的检索条件的数据。而不关编码的事,你把你的sql语句打印出来,看下是不是有这样的数据,你也可以打印出来后故意插入一条符合条件的数据来测试一下。
      

  22.   

    如果是char(100)的话,插入字符不足100个,剩下的会被空格填充的你可以去空格试一下,或者改成varchar(100)