求助tomcat5.0.19中文问题

水之轮回 2005-01-19 12:05:47
最近我把我的TOMCAT从4.0升到了tomcat5.0.19,但版本升了问题却来了,当我打开个页面时有部分可以正常显示中文,但部分是乱码,以为是没有写
<%@ page contentType="text/html;charset=gb2312" language="java"%>
但我都写了,到网上找了些资料,有很多解决这个问题的办法,我也试了,但还是有问题
我在我的WEBAPP里面加入了SetCharacterEncodingFilter.class,
WEB。XML也配置好了,server.xml也修改过了,但还是一样,也照网上其他的方法做了,还是不行,我就有点想不通,为什么TOMCAT会出现中文问题,难道不能在用户使用前解决这个问题,
能开发出来就应该可以在我们用之前排除这些问题吧,老是要我们东配下,西改下,多麻烦,
我还以为升了以后会好用点,但结果更麻烦,

但既然问题出现了,我们就要解决,我今天晚上搞了一晚上了,头晕了,在这里请大侠帮忙,
这里高手如云,应该不成问题,如果完完全全解决中文问题多好,
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
starwill 2005-01-19
  • 打赏
  • 举报
回复
1 表单提交的数据,用request.getParameter(“xxx”)返回的字符串为乱码或者??
2 直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request. getParameter(“name”)时返回的是乱码;按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用。

原因:
1 tomcat5的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理
2 tomcat5对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>


测试结果如果你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!
不徻写代码 2005-01-19
  • 打赏
  • 举报
回复
换个版本重装
以梦为马 2005-01-19
  • 打赏
  • 举报
回复
友情up。
woodcord 2005-01-19
  • 打赏
  • 举报
回复
你的配置,只是jdk+tomcat吗?
funcreal 2005-01-19
  • 打赏
  • 举报
回复
我怎么没有遇到呢?
<%@page contentType="text/html; charset=GBK"%>用这个,别的地方我什么都没有动过。危言耸听
水之轮回 2005-01-19
  • 打赏
  • 举报
回复
我的配置是JDK1。5+TOMCAT5。0。19
楼上的兄弟的方法我试过了,网上也这样的方法,
但还是不行,唉,不然我就不会贴到这里来麻烦大家了,
不过还是谢谢各位的热情帮助,
我再从0开始,再试试,
网上还提供了一个方法,有人提供了一个JAR包,里面有:jasper-compiler.jar,jasper-runtime.jar,catalina.jar,tomcat-coyote.jar,tomcat-util.jar五个文件,用来替代位于/common/lib下和/server/lib下同名文件即可。
我也试了,也不行。。。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧