Topic: tomcat url传递中文参数部分乱码问题(UTF8相关)

  Print this page

1.tomcat url传递中文参数部分乱码问题(UTF8相关) Copy to clipboard
Posted by: alexlex
Posted on: 2005-01-03 17:12

tomcat5.0.28
繁体win2000

已经修改server.xml中 URIEncoding="UTF-8"
页面里面
<%@ page language="java" pageEncoding="utf8"%>
<%@ page contentType="text/html; charset=utf8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
都设置为utf8

url内传递中文字,部分字可以显示,部分不能,例如a.jsp?x=中文,结果只有“中”显示正确,“文”为乱码

如果全部改为big5编码,那么绝大部分字可以正确显示,但是少部分字,如"氹"就不能显示了。

希望有大虾可以为我解惑

事实上如果全部改为big5编码的话,就基本不会有乱码了,我希望可以使用utf8编码,那样的话无论任何编码都可以使用

2.Re:tomcat url传递中文参数部分乱码问题(UTF8相关) [Re: alexlex] Copy to clipboard
Posted by: ?笮?闵?讣
Posted on: 2005-01-04 02:41

你把这句:<%@ page contentType="text/html; charset=utf8"%>
改成:<%@ page contentType="text/html; charset=gb2312"%>
再加一句<%request.setCharacterEncoding("gb2312");%>
其实你要是用tomcat5的话,应该不会出现这个问题,版本低的话就会出现这个问题,是因为TOMCAT的编码和浏览器的编码不一样引起的

3.Re:tomcat url传递中文参数部分乱码问题(UTF8相关) [Re: alexlex] Copy to clipboard
Posted by: 雪儿飘飘
Posted on: 2005-01-04 09:19

你也可以直接在tomcat中配置,如在conf/server.xml中,找到
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="ISO-8859-1" />
在最后一行加上 URIEncoding="ISO-8859-1"
如果是tomcat5的话,还要考虑get或post的问题。
如果是用GET的方式的话,用类似于下面的方法解决
String name = new String((request.getParameter("name")).getBytes("ISO-8859-1","Big5");
如果是用POST方式的话,用传统的方法解决
request.setCharacterEncoding("Big5");

4.Re:tomcat url传递中文参数部分乱码问题(UTF8相关) [Re: ?笮?闵?讣] Copy to clipboard
Posted by: alexlex
Posted on: 2005-01-04 16:24

?笮?闵?讣 wrote:
你把这句:<%@ page contentType="text/html; charset=utf8"%>
改成:<%@ page contentType="text/html; charset=gb2312"%>
再加一句<%request.setCharacterEncoding("gb2312");%>
其实你要是用tomcat5的话,应该不会出现这个问题,版本低的话就会出现这个问题,是因为TOMCAT的编码和浏览器的编码不一样引起的


thank u very much, but ~.~

5.Re:tomcat url传递中文参数部分乱码问题(UTF8相关) [Re: 雪儿飘飘] Copy to clipboard
Posted by: alexlex
Posted on: 2005-01-04 16:25

雪儿飘飘 wrote:
你也可以直接在tomcat中配置,如在conf/server.xml中,找到
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="ISO-8859-1" />
在最后一行加上 URIEncoding="ISO-8859-1"
如果是tomcat5的话,还要考虑get或post的问题。
如果是用GET的方式的话,用类似于下面的方法解决
String name = new String((request.getParameter("name")).getBytes("ISO-8859-1","Big5");
如果是用POST方式的话,用传统的方法解决
request.setCharacterEncoding("Big5");


如果用big5的话,根本不必new string之类,直接就URIEncoding="big5" ,而且还能使用${param.name}

6.Re:tomcat url传递中文参数部分乱码问题(UTF8相关) [Re: alexlex] Copy to clipboard
Posted by: YuLimin
Posted on: 2005-01-28 23:00

一、Tomcat本身的Get与Post中文处理方法
http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=0

1、从webapps\jsp-examples\WEB-INF\classes\下拷贝filters目录到worklist的classes目录下
2、设置Tomcat的Server.xml配置文件在<Connector中增加URIEncoding="GBK"成如下
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="GBK"/>
3、在应用程序的配置文件web.xml中<web-app>增加
<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>


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923