我在开发web应用时,在jsp页面中用jdbc访问数据库,在用setString(1,"头部")这一句时出现乱码,导致sql无法查询出正确的结果,想请教各位大哥,如何解决这个问题啊?
我试过,如果把“头部”改为英文的,数据库中的字段值也改成英文的就没问题。但如何在中文的时候也保持正确就解决不了了。
我试过用new Stirng()改变字符集也没办法
另:数据库编码GBK,页面utf8

解决方案 »

  1.   

    request.setChar…………试试
    页面也改成GBK看看。
      

  2.   

    "头部"转化成GBK的String str="头部";
    String dbString = new String(str.getByets("UTF-8"),"GBK");
    setString(1,dbString)如果还不行,你就干脆把页面和你java程序的编码都修改成GBK的,总之他们的编码要统一。
      

  3.   

    你看这样行不行:
    1 先写个中文字符转换的类如codeToString()
    代码如下:
    public String codeToString(String str)
    {
       String s=str;
       try{
           byte tempB[]=s.getBytes("ISO-8859-1"); //如果还不行,就写出GBK
           s=new String(tempB);
           return s;
           
          }
       catch(Exception e)
      {
          return s;
      }
     
      2.对接受的字符进行转换
        String str=codeToString(request.getParameter("parameter");
        其中parameter参数是你的查询条件如“头部"
      3.然后再进行查询操作。
     
      

  4.   

    这是数据库连接方式的问题。连接时应该可以设置编码,比如通过url,否这每次都重新编码程序代码会很难看,而且确实没有必要
      

  5.   

    通过url方式设置连接字符串的编码试过的
    new String("xxx".getBytes("iso-8859-1"),"GBK")也试过
    效果不变,所以才感觉没法了,,,如果改页面的编码的话,会改很多其他的东西,,是当初没设计好。。
    不知还有其他办法没有呢?
    现在主要问题就是出现在参数传给sql端后,出现乱码,,,我查过sql的setString()方法也没有设编码的参数不知有没有方法能打印出传到sql端的参数呢????
      

  6.   

    做WEB干嘛要在JSP页面上做数据库的操作呢?你把数据库操作放在后面,这个问题就成了单纯的页面传值的问题了,改编码方式~~~
      

  7.   

    对了,,,
    还有一点忘说了
    这程序在本地测试没问题,,
    问题是在上传到了unix的服务器上出错的
    是不是两系统对中文的编码方式不同造成的啊。。?
      

  8.   

    谢谢各位,问题已经解决了:
    我把“头部”单独定义成了一个变量,再调就没问题了
    估计是不是unix再解析中文的时候将引号同内容一起解析进去了,所以形成了乱码
      

  9.   

    谢谢各位,问题已经解决了:
    我把“头部”单独定义成了一个变量,再调就没问题了
    估计是不是unix再解析中文的时候将引号同内容一起解析进去了,所以形成了乱码