情景1
描述:jsp頁面page指定編碼爲UTF-8,在沒有任何過濾器的情況下,向servlet容器發送HTTP請求,如通過表單提交數據,傳遞的信息會被封裝在HttpServletRequest對象request裏面,若直接處理提交過來的中文字符串,會出現亂碼
<%@ page contentType="text/html; charset=UTF-8"%>
...
<form method="post" action="/ServletModel/model/UploadServlet">
<input type="text" name="name">
<input type="submit" value="提交"/>
</form>
...
servlet裏面
System.out.println(request.getParameter("name")); //?????全是問號
看到request裏面有一個方法是獲取編碼,但是返回值是null,說明request對象裏面是沒有設置編碼的request.getCharacterEncoding(); //null
那麼應該就有一個set方法,應該是將傳送過來的數據進行編碼
request.setCharacterEncoding("UTF-8")
這樣就正常了,這說明之前的默認編碼方式並不是UTF-8,它並不受頁面編碼所控制。據網上資料所說默認爲ISO- 8859-1編碼
同時響應的時候也應該設置編碼,如
response.setContentType("text/html; charset=UTF-8");