2006年6月9日 星期五

JSP參數傳送編碼問題

當使用 POST 的方式傳送參數時大部分是不會遇到問題的,但是當您使用URL加參數(GET)傳送參數時,常常會遇到編碼的問題。以下為解決的方法:

1.
如果 tomcat 是 5.0.x 的話,在 conf/server.xml 中加入 URIEncoding="utf-8" 如下面所示:
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="utf-8" />

2.
程式中需要使用 URL 傳送參數的地方改寫成
Server: "url.asp?var1=" + URLEncoder.encode(var1Value, "utf-8")
Client: "url.asp?var1=" + encodeURI(var1Value)

3.
接收參數頁則不需要再經過 var1Value = new String(request.getParameter("var1").getBytes("8859_1"), "UTF-8");
直接接收即可 var1Value = request.getParameter("var1");

4.
以上網頁全部為 utf-8 編碼