设为首页 收藏本站
查看: 582|回复: 0

[经验分享] 深入Tomcat 下Jsp乱码处理方法

[复制链接]

尚未签到

发表于 2017-2-1 14:17:08 | 显示全部楼层 |阅读模式
深入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

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-336203-1-1.html 上篇帖子: Tomcat请求处理(二) -- 请求处理框架 下篇帖子: How Tomcat Works 读书笔记(第三章)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表