大神们,小弟遇到一个问题,纠结了好久没做出来,希望路过的朋友能提供点帮助,不胜感激!
    是这样的,在某个JSP页面中,我要完成回贴功能,这个JSP页面的编码为GB2312,在这个页面上两个输入框,分别记录回帖的标题和内容,我把这两个输入框的内容传给本页上的JavaScript,然后在JS中用xmlHttpRequest对象把这些内容传递到一个Servlet中,这个Servlet通过request对象获取回帖标题和内容,并把它们写入数据库,数据库编码是GBK,试了好多方法,写进去的一直是乱码。刚学JSP,望高手们帮忙!

解决方案 »

  1.   

    你能在mysql终端插入中文数据到数据库么?---
    还有你的数据库是mysql,还是oracle,还是其他的?
    另给个建议:
    mysql的话,数据库编码建议使用gb2312
    而页面编码,tomcat等服务器,程序中的转码都建议统一为utf-8
      

  2.   

    你在servlet中获取的是乱码么?
      

  3.   

    All use UTF-8,then all are ok!
      

  4.   

    用的是Mysql,Mysql中是没有问题的,如果我是在一个JSP页面上输入中文内容,然后再跳转到另外一个JSP页面(比如注册页面提交后到结果页面)中文进行一下转换编码向数据库写入就是正常的,但是问题就出在如果通过JS传递给Servlet的话,再写入数据库就是乱码,我用的是相同的一个函数进行重新编码的。这个转换编码的函数如下:
            public String transChinese(String str){
    String s=str;
    try{
    byte temp[]=s.getBytes("ISO-8859-1");
    s=new String(temp);
    return s;
    }catch(Exception e){
    return s;
    }
    }
      

  5.   

    encodeURI(url);  
    注意!一定要两次!以下是我的部分代码
     
    var url = "/sxzlc/messageboard/adminReply.action?id=" + prefixID+"&muReplay="+muReply;
      url=encodeURI(url);  
      url=encodeURI(url); 
      

  6.   

    在JSP页面上对JS中得到的输入框中的中文参数进行处理,如:
    var url = servlet地址?参数名=中文参数值;
    url = encodeURI(url);
    然后在servlet中再对参数进行解码,如:
    String str = new String(参数名.getBytes("ISO-8859-1"), "gb2312");
    不过我强烈建议你JSP页面、数据库等所有的地方的编码方式都设置为UTF-8,就算不设置为UTF-8也要把所有的编码统一为一种。
      

  7.   


    难道是我记错了! 
    url编码的格式 好像是 %A2%B5这种东西
    和utf-8 gbk  不是一个东西
      

  8.   

    你随便找个网页dduu.com?a=你好回车http://www.dduu.com%3Fa=%C4%E3%BA%C3/这是url编码!!!ajax 通过url传参
    哪来的gbk utf-8 iso88590