jsp頁面中 <meta http-equiv="content-type" content="text/html; charset=UTF-8">通知瀏覽器以utf-8解碼
get請求編碼方式和post請求提交編碼方式不同,get是把數據直接放到url中,例如以上的uname,IE瀏覽器先對中文進行utf-8編碼(一個中文3個字符表示 太長),繼而為了縮短字符又用ISO8859-1編碼后傳遞給服務器。服務器的doGet方法中要先進行ISO8859-1解碼再utf-8解碼才能看到中文。
而post請求則在瀏覽器端把數據以utf-8的形式存儲到http的請求體中,不用通過url傳輸,繼而只要 request.setCharacterEncoding("utf-8");通知request以utf-8形式解碼就行,因為request默認以ISO8859-1進行解碼的。
總結:以后在實際的開發中避免不了給頁面輸出中文數據以及中文的參數。那么以后在處理用戶請求的doGet和doPost方法中我們應該一上來直接編寫如下三句:
1 response.setCharacterEncoding("utf-8");
2 response.setContentType("text/html;charset=utf-8");
3 request.setCharacterEncoding("utf-8");