2007-10-18

Tags: 程式語言

這份Part II的Memo,主要是記載URL中帶東方語系的變數值(中文、日文...etc)時,URL經由Apache Http Server轉發後可能產生亂碼的解決之道。

首先...我假設的前題是這樣的。你的網頁是UTF-8編碼,你的JSP網頁的檔頭也宣告UTF-8編碼,也就是環境中都統一UTF-8編碼。

當發現轉發的URL裡帶的變數值變亂碼時,要查的順序是下面這樣


  1. 查看Tomcat的Server.xml設定檔的JK Connector設定,加入useBodyEncodingForURI="true" URIEncoding="UTF-8"的參數值。參數設定明細可以參考這裡

  2. 上述這項如果失效的話,就要去查JK本身的JkOptions參數值設定,看看是不是它偷偷的幫URL"加料"。參數設定明細可以參考這裡

  3. 如果這樣還是不Work,那就只好再往前查,看看扮演Loadbalance Server的Apache Http Server是不是雞婆的在URL中進行了非UTF-8的編碼。在httpd.conf設定檔中加進AddDefaultCharset這類的語系設定強制它一定要走UTF-8編碼。參數設定明細可以參考這裡

  4. 如果到了這地步還不行!!!...那我也不知道該怎麼辦了...換你告訴我吧...囧rz

話說...我會記這篇Memo當然是有些原因的。因為該死的DisplayTag分頁功能就是因為這個URL編碼的問題給你出包,讓你的中文字變亂碼。解法是好不容易找到了,也真的很好改,只花十秒就可以搞定了。但是...為了解這個怪問題卻花了我四五個小時在官方網站跟Google上面找解。在解決之後內心的OS只有一句,那就是:「趕羚羊累...真它媽的!!!」。如果...是如果啦...未來有機會從無到有打造Web系統的話,我看改用Apache Wicket好了,這樣就可以脫離Displaytag的魔掌了...XDD