str是从那里传进来的?
前后编码保持一致即可

解决方案 »

  1.   

    不是啊 从页面上取得都是中文 只要一执行HQL语句 的时候 就变成中文乱码了
      

  2.   

    如果打印的str是"???",说明str的编码不是中文(如GBK,gb2312之类),这是由于你对str没做编码处理,可以采用的方法是写一个filter将编码方式设为GBK,具体如下:
    request.setCharacterEncoding("GBK");
    看结果是否是中文了.
    还有最好使用如下语句:session.createQuery("from table1 where name like ?").setString(0,"%"+str+"%").list();
      

  3.   

    这里可能因数据库不同,翻译的查询语句不一样,我采用server2000时可以的,在mysql5中把编码设为utf8可以正常查询,但设为GBK就出现了问题的