問題說明:由於瀏覽器中的引數傳遞是按位元組傳送,
因此英文和數字不會有任何的問題
,而中文漢字則由兩個位元組組成.
1. request.getparameter("name"): 預設採用的按照iso碼表取值,所以如果不指定request.setcharacterencoding("utf-8")就會對中文不適應。
那麼問題就來了
情況1: 1.jsp中測試中文param
2.jsp中如果直接用$或者<%=request.getparamter("param") %>或者都會顯示亂碼。
解決方案:
在2.jsp中使用轉碼技術: new string(request.getparameter("param").getbytes("iso-8859-1"), "utf-8");不能使用el或者ognl
情況2:
1.jsp中採用form表單post提交引數的方式
解決方案:
1: 2.jsp中可以使用情況1來避免亂碼。
2: 使用filter來過來request,使用
request.setcharacterencoding("utf-8")。
3.:2.jsp中在request.getparameter之前,設定request.setcharacterencoding("utf-8")。
情況3:
1.jsp中使用form表單get方式提交表單:
解決方案:
由於使用get,則瀏覽器的url在傳遞時,預設使用了預設的iso8859碼表的request.getparamter來得到引數,
而此時頁面其他地方再使用request.getparameter來得到引數,就會只用iso8859方式,即使指定了request.setcharacterencoding("utf-8")也不行。
所以只能用情況1的方式解決這種情況。
ps:
在ssh或者ssm中如果想使用request傳遞過程中的中午問題的話,可以在web.xml中配置
encodingfilter
org.springframework.web.filter.characterencodingfilter
encoding
utf-8
/*
上面只是說了request在傳遞請求時中文亂碼的問題,如果server響應client,需要向client輸出中文時,同樣也要指定client的碼表
//設定response使用的碼表response.setcharacterencoding("utf-8");
//指定瀏覽器以什麼碼表開啟傳遞的資料
response.setcontenttype("text/html;charset=utf-8");
jsp中文亂碼問題
eclipse預設新建的jsp檔案編碼是不支援中文的,每次改都好麻煩,網上的設定是各種分析什麼gb2312,包括之前的教材也是,真的好麻煩,決定直接上utf 8 1 設定預設新建的jsp檔案為utf 8模式 如何在eclipse中修改jsp預設編碼 2 設定utf 8之後,jsp檔案中寫中文是沒問題...
JSP中文亂碼問題
1 很顯然我們使用get或post方法傳送資料時,用的是機器上的預設編碼,在中文系統中使用的是gb2312,那麼我們應該設定request.setcharacterencoding utf 8 將傳送過來的編碼轉換為utf 8的編碼,則在顯示的時候就不會顯示為亂碼了,因為我的eclipse是使用的u...
JSP 中文亂碼問題
關於中文亂碼 1 在jsp頁面上輸入中文,請求頁面後不出現亂碼 保證contenttype text html,charset utf 8 pageencoding utf 8 中的charset和pageencoding的編碼一致,且都支援中文。還需要保證瀏覽器的顯示的字元編碼和請求編碼一致。中文...