xx.htm中的两个表单的name分别为a和b
xx.htm页面代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//CN">
<html>
<head>
<title>无标题文档</title>
</head><body>
<p>&nbsp;</p>
<form name="form1" method="post" action="x.jsp">
  <p>
    <input type="text" name="a">
  </p>
  <p> 
    <input type="text" name="b">
    <input type="submit" name="Submit" value="提交">
  </p>
</form>
<p>&nbsp;</p>
</body>
</html>x.jsp页面的代码如下:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
${param.a}
${param.b}在xx.htm的两个表单里分别填入  hehe 、哈哈  
x.jsp页面显示:hehe????请问我该怎么办?
谢谢各位。。

解决方案 »

  1.   

    上网查查编码的介绍就明白了。
    。有GB2312中有一个汉字“李”,其编码为“C0EE”,欲转化为ISO8859-1编码。步骤为:先把“李”字转化为Unicode,得到“674E”,再把“674E”转化为ISO8859-1字符。当然,这个映射不会成功,因为ISO8859-1中根本就没有与“674E”对应的字符。
      当映射不成功时,问题就发生了!当从某语言向Unicode转化时,如果在某语言中没有该字符,得到的将是Unicode的代码“\uffffd”(“\u”表示是Unicode编码,)。而从Unicode向某语言转化时,如果某语言没有对应的字符,则得到的是“0x3f”(“?”)。这就是“?”的由来。
      例如:把字符流buf =“0x80 0x40 0xb0 0xa1”进行new String(buf, "gb2312")操作,得到的结果是“\ufffd\u554a”,再println出来,得到的结果将是“?啊”,因为“0x80 0x40”是GBK中的字符,在GB2312中没有。
      再如,把字符串String="\u00d6\u00ec\u00e9\u0046\u00bb\u00f9"进行new String (buf.getBytes("GBK"))操作,得到的结果是“3fa8aca8a6463fa8b4”,其中,“\u00d6”在“GBK”中没有对应的字符,得到“3f”,“\u00ec”对应着“a8ac”,“\u00e9”对应着“a8a6”,“0046”对应着“46”(因为这是ASCII字符),“\u00bb”没找到,得到“3f”,最后,“\u00f9”对应着“a8b4”。把这个字符串println一下,得到的结果是“?ìéF?ù”。看到没?这里并不全是问号,因为GBK与Unicode映射的内容中除了汉字外还有字符,本例就是最好的明证。
      

  2.   

    首先??不是乱码,是当前字符集不识别该码值,一般表现在小字符集对大字符集bytes的输出;
    乱码一般为框框等莫名其妙不认识的字符,一般表现在大字符集对另一个字符集bytes的输出,它认为当前码值能识别所以输出其识别的字符,结果就成了我们看到的乱码.有两种途径解决楼主的问题:
    1、new String(param.a.getBytes(),"GB2312");
    2、request.setCharsetEncoding("GB2312");param.a;
      

  3.   

    好了,问题解决了。具体做法:在x.jsp文件的最开始加入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>在<body></body>体内加入<fmt:requestEncoding value="GB2312" />我在网上也找了一些解决办法,但都是很深的东西,我现在还不能做到。
    我也看到过楼上大虾的解决办法,但由于我用的是jstl的方法,因此用java的方式虽能解决,但改动会比较大,所以没有采用。感谢各位的关注。。
    谢谢。。
      

  4.   

    本着上和jstl关系不大,用一个过滤器转码;
    或者手工转码,不过手工转码我就不会用jstl了,
    <% 
      String bb = request.getParameter("b");
      String cc = new String( bb.getBytes("iso-8859-1"),"GBK");
    %>
    <%=cc%>
    听说还可以用jstl扩展包写自己的tag,用于转码,不过是变了一下形式,
    本质内容还是一样的。
      

  5.   

    jsp页面保存到数据库有乱码解决方法Jsp+tomcat+bean中文乱码问题解决方法javabean中参数有乱码
    1) 所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
    2) 在应用服务器中的server.xml方件中找到设置服务器端口的行,一般是这样开头:”<Connector port="8080"”,
    3) 在找到的行"<Connector"开头的字符串后加上:URIEncoding="UTF-8" ,保存文件
    --------------------------------------------------------------------------
    jsp页面有乱码解决方法    所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
        <%@ page contentType="text/html; charset=UTF-8">
    --------------------------------------------------------------------------
    jsp单个中文参数乱码解决方法    用这个转换一下: 
        <%!String trans(String chi)
           {
            string result =null;
            byte temp[];
            temp=chi.getBytes("iso=8859-1");
            result= new String(temp);
            }
        %>
    或者直接这样:
        <% 
          request.setCharacterEncoding("UTF-8");
          out.println(request.getParameter("参数ID")
        %>
    --------------------------------------------------------------------------