论坛首页 入门技术论坛

JSP中乱码的解决

浏览 3043 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-04-07  
<%@ 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  

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

 

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

 

 

0 请登录后投票
   发表时间:2008-04-07  
全盘使用UTF-8,应该没有这类问题的
0 请登录后投票
   发表时间:2008-04-07  
ok~thx~以前不知道还能在server.xml里改
0 请登录后投票
   发表时间:2008-04-07  
网上太多这个东西了,随便找找都可以的:)
知道其中的原理之后,可能才会更了解.
0 请登录后投票
   发表时间:2008-04-07  
使用utf-8就没问题了啦。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics