tomcat5.0.19 post和get 中文解决方法

原创 2004年09月21日 10:21:00
首先摘录 $TOMCAT_HOME/webapps/tomcat-docs/config/http.html中的两个参数解释: URIEncoding:This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.
useBodyEncodingForURI:This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding. This setting is present for compatibility with Tomcat 4.1.x, where the encoding specified in the contentType, or explicitely set using Request.setCharacterEncoding method was also used for the parameters from the URL. The default value is false.
上述二個 Tomcat 參数,是設定在 server.xml 中的 http 区域,要解决 QueryString 中文乱码的问題,你必須至少设定二个参数其中之一。 URIEncoding 请设定为URIEncoding="ISO-8859-1" 指定为"ISO-8859-1" 编码,让 QueryString 的字元编码和 post body 相同。 useBodyEncodingForURI 这是用來相容 Tomcat 4.x 版的,设定的值是 "true" or "false",意思是指 "要不要让 QueryString 与 POST BODY 用相同的字节编码 ?",若是设成 true,那也可达到 "ISO-8859-1" 编码的需求。 建议,用 URIEncoding 的设定,毕竟 useBodyEncodingForURI 的作法是为了相容 Tomcat 4.X。不过若照原文的說明,理论上这二个參数都不设,Tomcat 也该用 "ISO-8859-1" 的编码,那为什么是会有问题呢 ? 是因为 Tomcat Source Code 中关于 QueryString 程序的bug,所以,還是必須在 Server.xml 中,加上 URLEncoding 的參數設定才行哦。 Connector 的設定範例:
<Connector
debug="0"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
port="80"
redirectPort="8443"
enableLookups="false"
minSpareThreads="25"
maxSpareThreads="75"
maxThreads="150"
maxPostSize="0"
URIEncoding="ISO-8859-1"
>
</Connector>

 //注意,经过本人实验,设定URIEncoding="ISO-8859-1"后get方式依然是乱码,但是将其改为URIEncoding="gb2312"即可。
在這邊我做幾項補充 ... 一般說來,我們在使用 Tomcat 4 透過 GET or POST 的方式傳參數時,通常都是使用 Filter 的方式來解決中文傳參數的問題。 但是到了 Tomcat 5.0.19 之後,解決中文傳遞參數時,就必須考慮是使用 GET or POST,兩種解決的方式不一樣。 如果是使用 GET 的方式傳遞時,就如同 精靈 兄 的文章所述,或者使用 String name1 = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"gb2312"); ;若是使用 POST 的方式時,就延用傳統一般解決中文的方式 request.setCharacterEncoding("Big5"); 不過當初我最後的做法是使用 Filter 的方式 Filter 的做法就是:先判斷是使用那種傳遞方式( GET or POST),假若是用 GET 的方式就採用第一種 code;若使用POST 方式,就採用第二種 code。

另外,解决post也可以使用filter来解决:
1 实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。)

首先在jsp页面上添加:<%@ page contentType="text/html;charset=gb2312"%>


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>

get post 区别详解及引发中文乱码问题

1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。  2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连...
  • cl1771066100
  • cl1771066100
  • 2013年12月18日 16:53
  • 1524

解决Get和Post请求中中文乱码问题

对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题   request.setCharacterEncoding("utf-8"); 而对...
  • qq_28163175
  • qq_28163175
  • 2016年03月23日 09:33
  • 1490

servlet中post与get请求中文乱码解决

一、乱码原因 ①传输方和接收方采用的编码不一致。传输方对参数采用的是UTF-8编码而接收方却用GBK进行解析,当然是乱码。 ②Tomcat服务器默认采用的ISO8859-1编码得到参数值。...
  • happyAliceYu
  • happyAliceYu
  • 2016年08月30日 17:03
  • 1474

http 的post与get方法 以及处理中文乱码问题

本文将通过部署一个简单的服务器,并从客户端提交数据来学习post与get传递参数的方法,以及如何处理其中产生的中文乱码问题。 1.部署服务器      使用Java EE IDE(ecli...
  • u011572517
  • u011572517
  • 2016年01月03日 12:05
  • 2577

Get,Post请求中文乱码问题有效解决方法

对于做Java WEB项目同学来说,中文乱码问题是一个经常遇到而又非常头痛的问题,而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程,至于出现乱码的原因不是本文的关注的重点,想了解的朋友可以参考...
  • rchm8519
  • rchm8519
  • 2014年12月14日 22:57
  • 58510

Struts2中解决POST请求和GET请求中的中文乱码问题

Java语言虽然天生支持国际化语言,但在项目实践中仍然会遇到中文乱码问题。 Struts2提供的默认过滤器虽然可在一定程度上支持编码处理,但过滤器的配置不当或JSP页面编码不当,中文乱码问题仍会出现...
  • oEveryman
  • oEveryman
  • 2013年03月11日 15:26
  • 1662

$_GET 和 $_POST 的区别

以下的是从网上总结的资料。因为网上的都是大同小异,千篇一律的。而且还有好多是错的。我也不敢保证我的一定是正确的。仅供自己参考使用吧。 ...
  • xiao_tommy
  • xiao_tommy
  • 2016年11月16日 09:41
  • 1213

tornado的GET POST方法示例

例子说明get和post的方法使用: 一、示例用的GET方法: import tornado.ioloop import tornado.web class MainHandler(tornad...
  • fireroll
  • fireroll
  • 2014年07月19日 11:33
  • 2899

网络编程中Get与Post方式的区别

最近本人在找工作,有回一位面试官问到的,回答的不尽如意,回来后搜下资料整理一下。重新熟悉下Web编程 GET和POST与数据如何传递没有关系 GET和POST是由HTTP协议定义的。在HT...
  • smxueer
  • smxueer
  • 2016年09月03日 15:38
  • 425

关于Get,Post请求中文乱码问题有效解决方法

对于做Java WEB项目同学来说,中文乱码问题是一个经常遇到而又非常头痛的问题,而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程,至于出现乱码的原因不是本文的关注的重点,想了解的朋友可以参考...
  • wh_forever
  • wh_forever
  • 2015年09月07日 19:00
  • 1677
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tomcat5.0.19 post和get 中文解决方法
举报原因:
原因补充:

(最多只允许输入30个字)