`
hpjianhua
  • 浏览: 235498 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

深入Tomcat 下Jsp乱码处理方法

阅读更多
深入Tomcat 下Jsp乱码处理方法

我们经常在开发Jsp页面的时候,经常会遇到从页面提交到另一个页面的中文,提交后打印出来的竟然是乱码?这问题对新手初学Jsp网站编程来说的确是一大难题,有的人会因此在这困住了好几天,下面我结合自己的经验为大家整理下我自己在开发
Jsp页面的时候是如何处理这些乱码的方式.希望能对大家有一些帮助.

1.处理一个简单的HTML文件中出现乱码的方法:

如果Html页面中本身就有中文,而单击文件运行,却发现中文不能正常显示,那么如何解决这一问题呢?

其实问题的解决蛮简单的,如果知道它的原理的话.下面是处理的方法:

看一个简单的HTML文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
处理HTML文件中出现的乱码
</body>
</html>

在上面的这个HTML文件中,注意<meta http-equiv="Content-Type" content="text/html; charset=utf8" />这行代码,里面包括了这HTML文件的编码方式:charset=utf8" 代表这个HTML文件的编码方式是UTF8.UTF8是全球的统一编码方式.而在这里我们是要处理中文乱码问题,应改成中文的编码方式(其中中文的编码方式,我们最常用的就是GBK与GBK2312)在这里我们改成GB2312.即改成charset=gb2312

然后运行文件,是不是发现乱码不见了呢.下面我们再看另一个乱码的出现方式

2. 在Servlet容器中出现乱码方(文件中就包括了中文)这种应如何处理呢?

下面我给出大家经常处理的方法:
我们新建一个Servlet文件,如下:
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletTest extends HttpServlet {

public ServletTest() {
super();
}

public void destroy() {
super.destroy();
}


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println("  <BODY>");
out.print("    处理中文乱码Servlet");
out.print(this.getClass());
out.println(", using the GET method");
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

public void init() throws ServletException {
// Put your code here
}

}

运行上面的文件,依然出乱码问题了!怎么办呢?别急..下面看我的处理方法:

解决办法:response.setContentType("text/html;charset=gbk"); 注意:一定要写在PrintWriter out = resp.getWriter();之前

3.在Jsp文件中出现中文乱码的方式:

先看Jsp的开头的几行主要代码:
<%@ page language="java" contentType="text/html; charset=utf8"
    pageEncoding="utf8"%>
   
    其实这种出现乱码的方式与先前的HTML出现乱码的方式,处理方法相类似:
   
    将上面的代码改成下面的就OK了.
    <%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
   
    这里我用了中文的另一种编码方式GB18030.
   
4.在Form表单中以Get方式提交出现乱码的问题,这种应如何处理呢.这种处理的方法有点复杂,得去修改项目下的server.xml配置文件.

因为文章长度的原因,下面的我就不将例子的代码贴出来了.直接写解决方法了:

解决办法:修改server.xml ?URIEncoding="GBK"

5.在Form表单中以post方式提交出现乱码的问题的解决方法:

解决方法如下:
在Jsp页面中加上下面的一行代码:
<%
request.setCharacterEncoding("GBK");
%>

注意:一定要写在存取第一个参数之前,不要调用response.setCharacterEncoding("GBK");

6.以标签的方式出现乱码的问题:场合:<jsp:param name="user" value="<%=s%>"/>,url地址包含中文参数

处理方法:如同上面的方法,在页面中加入以下的代码:
<%request.setCharacterEncoding("GBK");%>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics