1. 程式人生 > >解決Servlet中get或post中文亂碼問題

解決Servlet中get或post中文亂碼問題

筆者在工作中遇到這個問題,第一次是POST中的中文亂碼問題。在JSP頁面中提交中文資料時,當時是用FF測試,發現沒有問題,資料能提交而且能用Hibernate插入到資料庫,之後用IE測試,發現不行,插入失敗,換成chrome也不行。最後發現問題的所在,中文列印輸出時為亂碼。JSP中的編碼為<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>,由於是用POST提交資料,第一反應就是加一行程式碼: 
Java程式碼  收藏程式碼
  1. request.setCharacterEncoding("utf-8"
    );  

問題即解決。 
第二次是用GET提交資料,servlet接收資料,因為在同一個表單中,有檔案上傳,也有一般的資料,於是用到了ajaxFileUpload上傳外掛,檔案上傳用的是POST提交方式,而一般的資料用的是GET提交。同樣是在UTF-8的JSP頁面中,同樣中文出現亂碼。但這一次沒有上一次幸運了。在網上查了很多資料,但還是沒有解決,有的是修改JSP頁面編碼,修改成GBK或gb2312,有的是修改tomcat的伺服器接收資料的編碼。但有一點提醒了我,tomcat預設接收資料的編碼是ISO-8859-1,於是就想到了將字串轉換編碼。 
Java程式碼  收藏程式碼
  1. new String(s.getBytes("ISO-8859-1"
    ), "utf-8");  

問題解決。只不過要麻煩點,每個涉及到中文的引數值都要轉換編碼,不過問題還是解決了。

轉自:http://maylian7700-126-com.iteye.com/blog/940846