深入Tomcat 下Jsp乱码处理方法

[size=medium]深入Tomcat 下Jsp乱码处理方法

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

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

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

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

看一个简单的HTML文件:




无标题文档



处理HTML文件中出现的乱码



在上面的这个HTML文件中,注意这行代码,里面包括了这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("");
out.println("");
out.println(" A Servlet");
out.println(" ");
out.print(" 处理中文乱码Servlet");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" ");
out.println("");
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.以标签的方式出现乱码的问题:场合:,url地址包含中文参数

处理方法:如同上面的方法,在页面中加入以下的代码:
<%request.setCharacterEncoding("GBK");%>[/size]

你可能感兴趣的:(Jsp学习模块,JSP,Tomcat,Servlet,HTML,编程)