1. 程式人生 > >在URL中傳遞中文引數時傳遞失敗的解決方案

在URL中傳遞中文引數時傳遞失敗的解決方案

環境:Tomcat

問題描述:使用 <a> 標籤的 herf 來傳遞頁面的引數時,英文正常,中文失敗

原因分析:使用 Tomcat 在URL中傳遞引數,是通過 HTTP 報頭來傳遞的,與表單傳遞不同,表單中傳遞的引數是在HTTP中的 body 中傳送的,字元過濾器只能起到過濾 HTTPbody 中的引數,不能過濾Head傳遞的引數,而TOMCAT中Head預設的是 ISO8859-1 的編碼方式,所以在URL中傳遞過去後就亂碼了。

解決方案:在伺服器server.xml檔案中,找到你使用埠的Connector,向其配置編碼方式,即加入useBodyEncodingForURI="true" URIEncoding="UTF-8"
然後重啟伺服器即可。

舉例:我使用的是8080埠,則

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
要注意的是,如果你的Connector中已經有 URIEncoding="UTF-8" 也需要加上 useBodyEncodingForURI="true" (防止出現意外)