深入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");%>
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com