用jstl处理获得表单的元素的值后,将值输出后是乱码,这是什么原因,我该怎么解决?我在page指令里面的pageEcoding属性也设置是“GBK”的值啊。请哪位仁兄能不能解决下。

解决方案 »

  1.   

    乱码问题
    1.数据库里的存的就不是GBK编码的(查看方法:从程序读数据库并打印到控制台输出)
    2.应用程序没有编码转换
    3.浏览器的字符编码格式不是GBK
      

  2.   

    不是啊我还是把源码贴出来吧:
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%> <html>
      <body>
      <font>个人信息</font>
         <form action="index.jsp" method="post">
        
         <table>
        
         <tr><td>姓名:</td><td><input type="text" name="userName"/></td></tr>
    <tr><td>性别:</td><td><input type="radio" name="sex" value="女"/>女</td><td><input type="radio" name="sex" value="男"/></td></tr>
         <tr><td>爱好:</td><td><input type="checkbox" name="hobby" value="篮球" />篮球<input type="checkbox" name="hobby" value="游泳" />游泳</td></tr>
         <tr><td><input type="submit" name="sub" value="提   交"/></td></tr>
         </table>
         </form>
         您的姓名:<font>${param.userName }</font><br>
    <c:out value="${param.userName}"></c:out>
      </body>
    </html>
    就是后面这两句:
    您的姓名:<font>${param.userName }</font><br>
    <c:out value="${param.userName}"></c:out>
    输出来的就是些问号。郁闷。。
      

  3.   

    这里有可能是你表单提交到jst1的时候,在jst1获得表单元素里的值的时候就已经是乱码了,所以你可以对获得的值进行下面这一步操作试试:
    String content =new String(request.getParameter("content").getBytes("iso-8859-1"),"GBK");
      

  4.   

    在你提交的页面的里加上:
          <%request.setCharacterEncoding("gb2312");%>
    看看行不。
      

  5.   

    Filter  
    -------------------------
    一劳永逸
      

  6.   

    诶,我这个菜鸟不会fileter。可怜,看来要学的东西多着啊
      

  7.   

    response.setHeader("Pragma", "No-cache");
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 0);
    response.setContentType("text/html;charset=gbk");
    response.setCharacterEncoding("gbk");
    request.setCharacterEncoding("gbk");把这个放了servlet或action试试