⑴ 「JSP頁面提交後,提交的post中文是正常的,但是到達伺服器上,中文就亂碼」是怎麼回事
有以下幾種方法可以解決
1.在jsp 的java代碼執行之前寫入在 <% response.setContentType("text/html;charset=UTF-8")%> 一定要是之前,因為設了這個下面簡含代碼才開始生效。可以寫在jsp開頭。
2.在在Servlet中service方法開始部分寫入 response.setContentType("text/html;charset=UTF-8")
3.在過濾器中寫入在Servlet中 response.setContentType("text/html;charset=UTF-8") 一般都寫在過濾器中,可以減少代碼重復量
4.對於提交已經編碼的數據需要先解碼再編碼,卜首也就是樓主的方法
new String(str.getBytes("ISO8859-1"),"UTF-8") 這種方法可以解決提交時候的問題,
new String(str.getBytes("UTF-8"),"ISO8859-1") 同樣的道理解決已經編碼的數據要顯示到頁面的時候就要反著寫
還有就是項目中最好使用統一的編碼包括:文件保存的時候使用的編碼,jsp文件翻譯時使用的編碼,伺服器響應編碼,和提交編碼,還有就是資料庫的編碼。
eclipse下:jsp和class文件保存時使用編碼在文件右鍵的property選項中能找到,
jsp頁面編碼有兩個<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
pageEncoding是設的是tomcat將jsp文件翻譯成servlet程序的時候執行的翻譯編碼,而charset才是伺服器響應編碼 也就是servlet中的response.setCharacterEncoding 一般都設置成UTF-8;
提交數據的時候也需要你那樣轉碼,不過轉碼工作卻實是型咐數寫在過濾器里,可以寫代碼的減少麻煩
提交參數時候要設置request的編碼,也就是你遇到的問題,按照我前四步的說明做就可以了。