使用get方法提交form表單時出現亂碼解決方法
tomcat5.x上用get方式提交的中文是亂碼
在tomcat5上,用form提交了,中文的內容是亂碼,而在4.x上沒有這個問題,真是讓人困擾,後來終於發現,原來區別在於5.x的form如果設
置method爲post就ok,用get就是亂碼;而在4.x用哪種都沒有問題。如果是用get的情況下,網上說這樣解決:
修改${Tomcat_home}/conf/server.xml:
<!--
URIEncoding="GBK":Force GET method String(Chinese) can be transferd
properly by http:uri note:Tomcat only support GBK specification,so
not set charset gb2312
-->
<Connector URIEncoding="GBK" port="80"
redirectPort="8443" maxSpareThreads="75" maxThreads="150"
minSpareThreads="25"> </Connector>
我還是將form的method設置爲post了。
但是還有一個問題,用get的方式就是有問題的啊,比如<a href=”test.jsp¶m1=中文”>
這個地方無論是否使用URLEncoding,test.jsp中還是會是亂碼,真是噁心得很。
後來看到了
http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=0
這個帖子,在server.xml中加入了:
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8" />
才把問題解決了,我的應用用的utf-8的編碼,如果我要用GBK,是不是這個配置還要改,真是他媽噁心。
後來又看到更好的一個解決辦法,也就是不用這個參數,而是用
useBodyEncodingForURI="true",這樣一來,應用無論用什麼編碼方式,都不需要該tomcat的任何配置了。
因爲很久沒有出現亂碼問題了,今天突然又出現了,給搞得措手不久, 我用的是springMVC,在web.xml文件中已經設置了編碼過濾器,應該是每個action都應該經過這個過濾器的,但是,有一個action在 取從頁面裏傳過來的參數時總是出現亂碼,後來才發現,因爲需要,我沒有在jsp頁面上用form形式提交,而是用javascirpt進行提交,就像下面 一樣
window.location=$F('ctx')+"/urlAddAction.do?urlName="+urlName+"&image="+image+"&content="+content+"&cityId="+cityId;
而這種形式就是像用get方面了,在url裏包含了中文參數,這個那個配置的過濾器就不起作用了,後來上網查了一下,在tomcat服務器下的conf/server.xml中要修改一下,就是在
content="text/html; charset=utf-8",則在tomcat/conf/server.xml中的配置文件中:
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" />
加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正確內容.