解決Servlet中get或post中文亂碼問題
阿新 • • 發佈:2019-01-03
筆者在工作中遇到這個問題,第一次是POST中的中文亂碼問題。在JSP頁面中提交中文資料時,當時是用FF測試,發現沒有問題,資料能提交而且能用Hibernate插入到資料庫,之後用IE測試,發現不行,插入失敗,換成chrome也不行。最後發現問題的所在,中文列印輸出時為亂碼。JSP中的編碼為<%@
page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>,由於是用POST提交資料,第一反應就是加一行程式碼:
Java程式碼
問題即解決。
第二次是用GET提交資料,servlet接收資料,因為在同一個表單中,有檔案上傳,也有一般的資料,於是用到了ajaxFileUpload上傳外掛,檔案上傳用的是POST提交方式,而一般的資料用的是GET提交。同樣是在UTF-8的JSP頁面中,同樣中文出現亂碼。但這一次沒有上一次幸運了。在網上查了很多資料,但還是沒有解決,有的是修改JSP頁面編碼,修改成GBK或gb2312,有的是修改tomcat的伺服器接收資料的編碼。但有一點提醒了我,tomcat預設接收資料的編碼是ISO-8859-1,於是就想到了將字串轉換編碼。
Java程式碼
Java程式碼
-
request.setCharacterEncoding("utf-8"
問題即解決。
第二次是用GET提交資料,servlet接收資料,因為在同一個表單中,有檔案上傳,也有一般的資料,於是用到了ajaxFileUpload上傳外掛,檔案上傳用的是POST提交方式,而一般的資料用的是GET提交。同樣是在UTF-8的JSP頁面中,同樣中文出現亂碼。但這一次沒有上一次幸運了。在網上查了很多資料,但還是沒有解決,有的是修改JSP頁面編碼,修改成GBK或gb2312,有的是修改tomcat的伺服器接收資料的編碼。但有一點提醒了我,tomcat預設接收資料的編碼是ISO-8859-1,於是就想到了將字串轉換編碼。
Java程式碼
-
new String(s.getBytes("ISO-8859-1"
問題解決。只不過要麻煩點,每個涉及到中文的引數值都要轉換編碼,不過問題還是解決了。
轉自:http://maylian7700-126-com.iteye.com/blog/940846