JAVA URL中帶有中文時(shí)的處理
JAVA 中URL鏈接中文參數(shù)亂碼的處理方法
解
決ajax提交中文、URL中文參數(shù)傳遞后的亂碼問題的解決辦法:http://www.javaly.cn/javahome/java
/content.detail/%E8%A7%A3%E5%86%B3ajax%E6%8F%90%E4%BA%A4%E4%B8%AD%E6%96%87%E3%80%81URL%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E5%90%8E%E7%9A%84%E4%B9%B1%E7%A0%81%E9%97%AE%E9%A2%98%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/fdc1ed6c22069c56012282a321ed0465.faces
前面,我已經(jīng)有2篇關(guān)于url中帶中文,亂碼的處理方法,今天又找到一種解決辦法,覺得這個(gè)辦法是最好的,所以再次拿出來給大家分享:
以前做法都是把中文進(jìn)行Base64編碼添加到URL后面,取得時(shí)候再用Base64解碼。這樣雖然能解決問題,但是太過于麻煩。
不同的AppServer如何對(duì)URL進(jìn)行編碼實(shí)現(xiàn)的原理可能會(huì)不同.(Resin和Tomcat肯定會(huì)不同)
在Tomcat下至少做到了這四個(gè)步驟就可以解決中文編碼的問題
(1)確定JSP頁面頭部是否有:<%@ page contentType="text/html; charset=GBK" %>
(2)用這個(gè)轉(zhuǎn)碼:
String param= new String(request.getParameter("param").getBytes("ISO-8859-1"), "GBK");
(3)添加filter字符過濾器
(4)如果是通過"a.jsp?param=中文"傳遞參數(shù),則需要:
a.在傳參數(shù)之前先把參數(shù)進(jìn)行轉(zhuǎn)碼:java.net.URLEncoder.encode(param);
取值用java.net.URLDncoder.decode(param);再轉(zhuǎn)回中文
b.在你的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" <!--在里邊加上這個(gè)參數(shù)-->URIEncoding="gb2312"
/>
關(guān)鍵是第4步,添加URIEncoding="gb2312"
在Resin中,修改Resin.conf
<server>
......
<url-character-encoding>utf-8</url-character-encoding>
.......
</server>
因?yàn)?,Resin decodes the URL before it dispatches to a <web-
app> to the <url-character-encoding> needs to be at the <server> level.