当前位置:编程学习 > JAVA >>

form表单提交数据到Servlet页面时,中文出现乱码问题

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title here</title>
</head>
<body>
<form action=HelloWorld method="post">
name:<input type=text name="username" /><br/>
password:<input type=password name="password"/><br/>
<input type=submit value="submit"/>
</form>
</body>
</html>




//HellWorld.java
package com.bjsxt;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


 public class HelloWorld extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   
   


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet.....");

}  


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost....");
PrintWriter out=response.getWriter();
    out.println("<html><head><title></title></head><body>Hello World!</body></html>");
   String str1= request.getParameter("password");
   out.println(str1);
   String str2=request.getParameter("username");
      str2=new String(str2.getBytes("iso-8859-1"),"gbk");
   out.println(str2);
}           
} --------------------编程问答-------------------- 过滤器中设置一下编码格式。
或者doPost,doGet里面添加:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
当然,这里是看你页面使用什么格式来定的。你用的iso-8859-1? --------------------编程问答-------------------- 要不统一写成utf-8吧  在doPost中写request.setCharacterEncoding("UTF-8");
--------------------编程问答-------------------- 果然是新手啊!
request.setCharacterEncoding("utf-8");
这句话的意思是设置页面发送到客户端的数据格式

response.setCharacterEncoding("utf-8");
这句话的意思是设置客户端返回给页面的数据格式

所以在你使用request.getParameter("")之前一定要设置request的编码格式,在你使用out.println("")之前一定要设置response的编码格式。所以最好是将那两句话写在最前面就没问题了。只是这样每个servlet中都要写这两句话比较麻烦,如果你懂过滤器的话,最好写一个乱码过滤器,将这两句话放在过滤器中就行了。 --------------------编程问答-------------------- 楼上的,正解哈
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,