在tomcat5中发现了以前处理tomcat4的方法不能适用于处理直接通过url提交的请求,上网找资料终于发现了最完美的解决办法,不用每个地方都转换了,而且无论get,和post都正常。写了个文档,贴出来希望跟我有同样问题的人不再像我一样痛苦一次:-)
上传文件有问题,只好直接贴了,难看点:-)
-------------------
Tomcat 5中文问题
author:kiss__sky@163.com
-------------------
问题描述:
1 表单提交的数据,用request.getParameter(“xxx”)返回的字符串为乱码或者??
2 直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request. getParameter(“name”)时返回的是乱码;按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用
原因:
1 tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理
2 tomcat对get方式提交的请求对query-string 处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding(“gbk”))不起作用。
解决办法:
首先所有的jsp文件都加上:
1 实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。)
1)只要把%TOMCAT安装目录%/ webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。
2)在你的web.xml里加入如下几行:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3)完成.
2 get方式的解决办法
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:
<Connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
2)重启tomcat,一切OK。
执行如下jsp页页测试是否成功
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%
String q=request.getParameter("q");
q = q == null? "没有值" : q;
%>
<HTML>
<HEAD>
<TITLE>新闻列表显示</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=pragma content=no-cache>
<body>你提交了:<%=q%>
<br>
<form action="tcnchar.jsp" method="post">
输入中文:<input type="text" name="q">
<input type="submit" value="确定"> <br>
<a href="tcnchar.jsp?q=中国">通过get方式提交</a> </form></BODY></HTML>
测试结果如果你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!
分享到:
相关推荐
解决tomcat中文乱码问题,有详细的解释说明,希望对需要的人有所帮助
tomcat5中文问题完美解决
Tomcat中文乱码是很麻烦的,这里提供了一个这问题的完美解决,大家可以参考一下
Tomcat 中文问题及解决方法总结,学习JAVA必备
解决tomcat下中文乱码问题, 在tomcat_home\conf\server.xml 中的Connector元素中设置URIEncoding属性为合适的字符编码
解决tomcat中文乱码问题.doc,很宝贵的资料。
Tomcat和weblogic中文乱码问题解决方案
解决tomcat中文乱码的问题!!!!!! !!!!!!!!!!!!!!!!!!!
解决tomcat中文显示的设置方法
tomcat get提交中文乱码解决方案,修改tomcat server.xml 中以下为
Tomcat环境下JSP中文乱码问题的解决
解决Tomcat乱码的问题
而该工具可以自动解决UTF-8和GBK乱码的问题。 使用教程: 直接替换原先项目的Tomcat,将JavaWeb项目(Servlet、SSH、SSM框架的项目)直接部署到该Tomcat8中即可,无需做其他的额外的操作。 运行教程: 可以通过...
一般我们所装的linux服务器,是中文版的,所以系统环境的编码是gbk,然而我们项目的编码是UTF-8,这就必须在tomcat的server.xml文件中修改,在两个地方添加 URIEncoding="UTF-8",具体代码如下:
现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。 1)JSP页面中显示中文乱码 在JSP文件中使用page命令指定响应结果的MIME类型,如;charset=gb2312" %>
彻底解决Tomcat的页面提交时的中文问题
如何解决Tomcat下中文乱码问题?文.pdf
Tomcat乱码问题终极解决办法,乱码问题从此消失。