servlet亂碼及接收表單提交引數
阿新 • • 發佈:2018-12-31
servlet輸出中文(輸出到頁面的中文亂碼)(1)亂碼產生的原因
out.println方法預設情況下會使用“iso-8859-1”
response.setContentType("text/html;charset=utf-8");
注:作用1:out.println方法會使用指定的字符集來編碼作用2:設定content-type訊息頭的值
3.如何讀取請求引數值?
1) request.getParameter(paramNane);//paramNane一定要與表單中標籤的name屬性值一致
注意有可能獲得空值,也有可能獲得空字串,所以,在伺服器端,一定要對請求引數值做相應的檢查。
2)String[] request.getParameterValues(String paramName)//接收多個值如複選框
4.表單半含有中文引數值,如何處理?(表單提交過來的中文亂碼)(1)亂碼產生的原因表單提交是,瀏覽器會對錶單中的引數值進行編碼(開啟表單所在的頁面時使用的字符集來編碼)伺服器預設情況下,會使用“ios8859-1”來解碼。(2)解決方式
1)step,保證表單提交時,使用指定的字符集來編碼。
<meta http-equive="content-type"content="text/html;charset=utf-8"/>
2)step2,使用對應的字符集來解碼方式一
request.setCharacterEncoding("utf-8")
a.該該方法要新增到所有的getParameter方法的前面。
b.只針對post請求有效方式二
new String(name.getBytes("iso-8859-1"),"utf-8");
即先還原(獲得瀏覽器傳送過來的位元組陣列),然後使用正確的字符集("utf-8")來解碼