Servlet之瀏覽器頁面出現中文亂碼問題

博主最近在寫servlet頁面跳轉的時候出現了瀏覽器出現中文亂碼的問題,一半是中文,一半是亂碼,也是浪費了好多時間才解決這個破問題:


對於單獨的一個servlet文件來說,要向頁面寫中文,只需要在doget 或者dopost 方法的首行加上    response.setCharacterEncoding("GBK"); 即可解決中文亂碼問題,但是對於兩個以上的servlet文件來說,如果他們之間發生了數據交互(中文),並且在瀏覽器上顯示就必須保證他們的字符串的編碼方式一致才能保證在頁面裏上顯示,以博主遇到的問題爲例:

1. 博主有一個登陸html文件,login.html ,一個負責提取login.html表單中的數據並將他們存到session中的文件 loginServlet.java,一個負責顯示驗證碼圖片的文件checkcode.java,一個負責提取session中的數據判斷用戶是否是合法用戶顯示歡迎界面的 文件 welcome.java。


2.本過程中servlet文件loginservlet與welcome文件發生交互,如果用戶輸入的驗證碼正確,則loginservlet -----跳轉--> welcome。


3.loginservlet提取loggin.html的表單數據並存到session中,就已經發聲明瞭字符串編碼的變化(默認是utf-8的),就是說存到session中的字符串編碼就是utf-8的,而我們後期再welcome,java裏面要提取這個session中的數據並顯示到頁面上,因此我們要將提取的數據編碼設爲gbk的,而不是utf-8的,即在loginservlet中加上這麼一句:request.setCharacterEncoding("GBK"); 則存在session中的字符串就是gbk編碼的了


下面再在welcome.java中加一句:response.setCharacterEncoding("GBK");  就能解決中文亂碼的問題了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章