servlet 用get傳中文參數
from: response.sendRedirect("./change?reason=" + URLEncoder.encode("售完", "UTF-8")); ps.將中文轉為UTF-8的URL to: String reason = request.getParameter("reason"); reason = new String(reason.getBytes("iso-8859-1"),"UTF-8"); ps.接收端無法使用request.setCharacterEncoding("UTF-8")接收get過來的中文參數,只能使用getBytes reference http://openhome.cc/Gossip/Encoding/Servlet.html 原文轉貼如下: 請求參數的編碼處理,基本上必須分POST與GET的情況來說明,我們先來看POST的情況… 如果客戶端沒有在Content-Type標頭中設定字元編碼資訊(例如瀏覽器可以設定Content-Type: text/html; charset=UTF-8),此時使用HttpServletRequest的getCharacterEncoding()傳回值會是null,在這個情況下,容器若使用的預設編碼處理是ISO-8859-1(大部份瀏覽器預設的字元集) 你可以使用HttpServletRequest的setCharacterEncoding()方法指定取得POST請求參數時使用的編碼。例如若瀏覽器以UTF-8來發送請求,則你接收時也要使用UTF-8編碼字串,則可以在取得任何請求值之「前」,執行以下陳述: request.setCharacterEncoding("UTF-8"); 在HttpServletRequest的API文件中,對setCharacterEncoding()的說明清楚提到: Overrides the name of the character encoding used in the body of this request. 也就是說,這個方法對於