这是一个在 ASP VBScript 里绝对不会出现的问题,但是在 JSP 里出现了,实在让人苦恼:我制作了两个 JSP 网页,A 和 B,A 里头有文本框和提交按钮,指向网页 B。但是,当我在 A 里头输入汉字,点提交之后,B 接收到的总是乱码(我设了 println 监测语句,比方说输入“中国”,Eclipse 的事件监视栏里就显示三个问号加一个“ú”)。我在 A B 两个页面里都加入了 <%@page contentType="text/html; charset=GBK" pageEncoding="GBK"%> 和 <meta http-equiv="Content-Type" content="text/html; charset=GBK">(放在 head 部分)这两行语句,但是都不管事。这样的话,我根本没有办法做一个中文搜索引擎(像 ASP 传递的结果就不会是乱码,虽然以 get 方式传参时,URL 上的参数写法是一串百分号、乱码,但传递到 request 对象里头的时候就能还原回汉字。但 JSP 却始终不行)。此事关乎本人的毕业设计,急求各位 JSP 高手相助!

解决方案 »

  1.   

    你在页面上的设置。
    charset=GBK 转花为 servlet 后 是request.setCharEncoding("GBK"); 
    而这个设置只对 post 提交方式有效 。
    URL 传中文 要么用 java.net.URLEncoder("XXX"); 进行重写。
    要么在 Tomcate 的 server.xml文件中配置
     <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443"  URIEncoding="GBK">
      

  2.   


    问题是,我最开始设置的就是 post 提交方式,传过去的也是乱码!
      

  3.   

    String name=request.getParameter("name");
    name=new String(name.getBytes("ISO8859_1"),
     "gb2312");用这个试试吧 
    服务器端传过来的应该是ISO8859_1编码的 需要转换成gb2312
      

  4.   

    不好意思,上面看走眼了。是说在接收页加了 request.setCharEncoding("GBK"); 这一语句之后,就可以使 post 方式正常,是吗?
      

  5.   

    String name=request.getParameter("name");
    name=new String(name.getBytes("gbk"));    //gbk不行就换utf-8,试一试。或者自己写一个转码的方法。
      

  6.   

    纠正下方法名字....
    request.setCharacterEncoding("GBK"); 
      

  7.   


    这位大哥的解决方法最正确,书写格式很对!getBytes() 方法,括号里填写的是 getParameter 产生乱码时的编码名,括号外才是需要转换成的编码名。而不是 5 楼那位大哥写的 getBytes("GBK"),那样执行的结果仍然是乱码。不过还是得感谢楼上所有热心提供帮助的朋友们!谢谢你们了,大家都有分数可拿!