<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
<!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=gb2312">
<title>Insert title here</title>
</head>
<body>
<form action="SayHelloServlet">
 <input name="userPwd" id="userPwd" size="14" tabindex="2">
 <input type=submit >

</form>
</body>
</html>



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

/**
 * Servlet implementation class for Servlet: SayHelloServlet
 * 
 */
public class SayHelloServlet extends javax.servlet.http.HttpServlet implements
		javax.servlet.Servlet {
	static final long serialVersionUID = 1L;

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public SayHelloServlet() {
		super();
	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
	 *      HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String str = (String) request.getParameter("userPwd");
		String str_new= new String(str.getBytes("ISO-8859-1"),"GB2312");
		System.out.println("转换前: "+str);
		System.out.println("转换后: "+str_new);
	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
	 *      HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
}


在tomcat的内部,都是以iso8859-1来编码的,这样在servlet里取出来再用utf8来解码,就会产生乱码,可以手动的用new string(getbytes)来解码,或者直接的在setEncoding里设置也可以。




权宜之计~
评论
清风车影 2008-04-07
使用utf-8就没问题了啦。
Fly_m 2008-04-07
网上太多这个东西了,随便找找都可以的:)
知道其中的原理之后,可能才会更了解.
tiantian911 2008-04-07
ok~thx~以前不知道还能在server.xml里改
gfh21cn 2008-04-07
全盘使用UTF-8,应该没有这类问题的
slaser 2008-04-07

tomcat在处理get方法参数时,采用ISO-8859-1字符集,不过,你可以改server.xml里面的设置。

 

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443"
               URIEncoding="UTF-8"/>
 如果你用post提交,应该一切正常。

 

 

发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

tiantian911
搜索本博客
我的相册
8570c9fd-4d76-364a-82af-38a3e287205e-thumb
1.jpg
共 23 张
最近加入圈子
存档
最新评论