url中文參數亂碼問題

一、問題:

  web項目裏url的中文參數亂碼html

 

二、解決:

(1)前臺:encodeURI(encodeURI(code))
(2)後臺:URLDecoder.decode(new String(code.getBytes("iso-8859-1"),"utf-8"), "utf-8")

 

三、疑問:

  (1)爲何前臺須要編碼兩次?java

    由於request.getParameter(String)會進行一次URI的解碼過程,調用內置的解碼過程會致使亂碼web

    而編碼兩次能夠保證內置的解碼過程執行後的結果是編碼一次的結果(若是直接是中文會致使沒法顯示而亂碼)tomcat

  (2)後臺爲何要首先以[iso-8859-1]讀一次編碼?編碼

    tomcat7的默認編碼是[iso-8859-1],tomcat8的默認編碼是[utf-8]url

    須要以[iso-8859-1]讀取字節碼,再以[utf-8]構形成子串,再使用[utf-8]解碼一次,便可獲得中文在程序裏使用spa

 

四、擴展:

  其它方法:(沒有試驗)code

  (1)根據tomcat的版本不一樣能夠設置tomcat安裝目錄下的[conf/server.cml]文件的connector配置server

  (2)在程序重寫獲取參數的方法htm

 

五、參考文章

          js/java 頁面url傳值中文編碼&解碼問題

  encodeURI(encodeURI(code))

  url出現中文亂碼
相關文章
相關標籤/搜索