2017-03-27

讓TOMCAT能辨識URLEncode的中文檔名

TOMCAT預設是以ISO-8859-1來解讀經過URL Encode的URL的,因此要改為告訴TOMCAT所有URL經過URL Decode後要以UTF-8來解讀。

修改 bin/catalina.sh:
JAVA_OPTS="-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Duser.timezone=GMT+08 ${JAVA_OPTS}"
(-Dsun.jnu.encoding=UTF-8可有可無)

或修改 conf/web.xml (有修改catalina.sh就不用改web.xml)

 
 
        setCharacterEncodingFilter
        org.apache.catalina.filters.SetCharacterEncodingFilter
        
            encoding            UTF-8        
 

  
  
        setCharacterEncodingFilter
        /*
  

修改 conf/server.xml:
<Connector port="80" protocol="HTTP/1.1"
...
URIEncoding="utf-8" useBodyEncodingForURI="true"
...
>

URIEncoding:對於URI,決定要以何種編碼來處理。
useBodyEncodingForURI:對於URI,決定是否要以request HEADER中的Content-Type中的編碼類型訊息、或request.setCharacterEncoding()方法中指定的編碼來處理,若為false則一律以URIEncoding所指定的編碼來處理。

而編寫網頁時,最好能自行將下載鏈結等先做URL Encode,而不是讓瀏覽器去幫你做,因為不是每個瀏覽器都會自動以URL Encode(UTF-8)來傳送的。 如果是有在寫jsp,那麼在web.xml加上:

  
    *.jsp
    UTF-8
  

沒有留言:

張貼留言