在URL中傳遞中文引數時傳遞失敗的解決方案
阿新 • • 發佈:2019-02-19
環境:Tomcat
問題描述:使用 <a>
標籤的 herf
來傳遞頁面的引數時,英文正常,中文失敗
原因分析:使用 Tomcat
在URL中傳遞引數,是通過 HTTP
報頭來傳遞的,與表單傳遞不同,表單中傳遞的引數是在HTTP中的 body
中傳送的,字元過濾器只能起到過濾 HTTP
中 body
中的引數,不能過濾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"/>