funcName=new String("...","utf-8");
.....
这个试试

解决方案 »

  1.   

    這個以前也遇到過的,好象是用什麽8859-1什麽進行轉換的String str=new String("")
    funcname=(String)str.getBytes();
      

  2.   

    编码问题String funcname = "查询制定城市天气";
    funcname = new String(funcname.getBytes("iso8859-1"),"gb2312");这样试试看。当然如果你不是采用后面的编码方式,就改成你的编码方式。
      

  3.   

    jsp中:
     funcname="查询制定城市天气";
     funcname = new String(funcname.getBytes("iso8859-1"),"gb2312");
    list=qp.getDatas(funcname);
    it=list.iterator();
    while(it.hasNext())
    {
    AbstractGiisQueryConfig results=(AbstractGiisQueryConfig)it.next(); %>
    <td nowrap align="center" bgcolor="#426388">
    <font color="#FFFFFF"><%=results.getFieldDesc()%></font></td> <%}%>
    public List getDatas(String p0){
         Session session = null;
         Transaction tx = null;
            try {
         session = HibernateSessionFactory.getSession();
         tx = session.beginTransaction();
         String hql="from GiisQueryConfig as config where config.funcName = '"+p0+"' order by config.fieldName";
    //tableName = '"+funcname+"'";
         List list = session.createQuery(hql).list();
         tx.commit();
         return list;
         } catch (HibernateException e) {
         e.printStackTrace();
         if (tx != null)
         try {
         tx.rollback();
         } catch (HibernateException e1) {
         e1.printStackTrace();
         }
         return null;
         } finally {
         try {
         if (session != null)
         HibernateSessionFactory.closeSession();
         } catch (HibernateException e1) {
         e1.printStackTrace();
         }
         }
        }
    就是不显示啊。如果将funcname="查询制定城市天气";改成"SWeather",将getDatas(String p0)中String hql="from GiisQueryConfig as config where config.funcName = '"+p0+"' order by config.fieldName";的config.funcName 改成config.tableName。就可以,找个字段值为英文的就可以!
    郁闷死了!
      

  4.   

    有没有人能给我看看啊?iso8859-1 gb2312 gbk utf-8我都试了,就是不行啊!
      

  5.   

    String hql把它getBytes();看看行不?
      

  6.   

    tonyyl(没有比事实更真实的了) :不明白你的意思。是这样:
    String hql="from GiisQueryConfig as config where config.funcName = '"+p0+"' order by config.fieldName".getBytes();?
      

  7.   

    很简单,hql=new String("...")+p0+new String("...");那hql是什么便码的?
    另外,你这种sql是编程大忌,很容易被人注入攻击,你看看...+op0+" and 1=1"能不能用?
      

  8.   

    谢谢你给我指出问题!因为刚接触编程所以好多问题考虑不周!
    hql=new String("...")+p0+new String("...");这是什么意思啊?
      

  9.   

    你用的可能是nchar类型的字段
    nchar字段如果存储的是中文的话,后面默认会有一个空格(也不一定是一个空格,可能是其他什么编码)
    你把字段读出来看看,是不是有个空格?
    用str.trim()去掉空格看看,是不是就没有了?
      

  10.   

    比如rs.getString("info")
    其中info是字段名,字段类型是定长nchar
    那么得到的是“查询制定城市天气 ”(有个空格在后面)
    而不是“查询制定城市天气”(后面没空格)我想会不会是因为这个影响?
    所以一般我都是((String)rs.getString("info")).trim()
    这样就去掉了那个空格。
      

  11.   

    tonyyl(没有比事实更真实的了) 要防止被注入,有什么好点办法没?
    我都是直接去掉参数中的空格,如果是id的话判断是否为整数不知道这样是不是很傻?
      

  12.   

    Tameway(Tameway) :
    我不是从数据库中取数据时显示乱码,而是利用变量与数据库字段比较查询记录时出的问题。如果变量是中文就会取不出记录,相反是英文就可以!