APP下载

如何解决Tomcat的乱码

2012-08-15杨丽慧

河北民族师范学院学报 2012年2期
关键词:页面设置

杨丽慧

(河北民族师范学院 信息中心,河北 承德 067000)

如何解决Tomcat的乱码

杨丽慧

(河北民族师范学院 信息中心,河北 承德 067000)

针对在JSP/Servlet程序设计中,服务器用Tomcat在页面上经常会看到乱码。就这个问题提出几种解决的方法。

tomcat;JSP/Servlet;GET;POST;Filter

开发项目时,用JSP/Servlet编程,服务器用tomcat,经常会看到乱码。所以就乱码的问题同大家探讨一下。

1.页面静态内容乱码

在JSP/Servlet中主要在以下几个地方可以设置编码,<%@page pageEncoding=“UTF-8”%>,建议在每个页面上都加上pageEncoding设定,让应用服务器能正确把JSP文件按照设定的编码转换为Java文件,只要这个pageEncoding设置正确就可以避免静态内容的乱码。有的时候没有设置也没有乱码,那是因为应用服务器还可以读取<%@page content-Type=“text/html;charset=UTF-8”%>中的charset作为备选方案,虽然这是JSP规范中要求的,但是难保有的容器没有实现或实现有BUG,所以有时候在某个应用服务器下 (如Tomcat)不设置pageEncoding也可以,但是同样的页面拿到别的应用服务器下就有可能出现乱码。

2.动态生成内容乱码

新下载的Tomcat没有经过任何特殊的设置,无论是GET和POST都出现乱码。首先设置HTTP Connector(server.xml中监听8080端口的那个Connector),加上URIEncoding=“UTF-8”,消除了GET乱码,再在 JSP页面中第一句加入<%request. setCharacterEncoding(“UTF-8”)%>,消除了POST乱码。通过上面两个设置我们发现,URIEncoding控制的是GET字符集编码,Request的CharacterEncoding控制的是POST字符集编码。

上面提到的<%@page contentType=“text/html;charset=UTF-8”%>,除了声明返回给客户端的流是text/html外,同时设置了Response的CharacterEncoding,相当于执行了Response.setCharacterEncoding (“UTF-8”)这段代码。它保证了服务器端生成的动态内容到达客户端也不会乱码。

但有一种情况下也不会出现乱码,就是如下例这种情况,前提是没有设置Request的CharacterEncoding:

1 protected void doPost(HttpServletRequest request ,HttpServletResponse response) throws ServletException,IOException{

2 response.getWriter().write(request.getParameter(“xxxxx”));

3}

这种情况下提交过来的表单数据其实是ISO-8859-1的编码,而返回给客户端又没有<%@page contentType=“text/html;charset=UTF-8”%>的设置,所以还是ISO-8859-1的编码,但是为什么没有乱码呢?……

登录APP查看全文

猜你喜欢

页面设置
微信群聊总是找不到,打开这个开关就好了
大狗熊在睡觉
刷新生活的页面
中队岗位该如何设置
7招教你手动设置参数
本刊栏目设置说明
中俄临床医学专业课程设置的比较与思考
舰船人员编制的设置与控制
地铁出入段线转换轨设置
同一Word文档 纵横页面并存