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

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

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

問題解決。只不過要麻煩點,每個涉及到中文的參數值都要轉換編碼,不過問題還是解決了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章