表單提交欄位到servlet亂碼問題
阿新 • • 發佈:2018-12-29
TestServlet.java如下
// 在servlet層出現了亂碼問題
4、初步判定
通過的servlet-web層打印出字串就顯示成了亂碼格式、那麼再通過dao層插入到資料庫後肯定是亂碼的,問題定位在jsp頁面到servlet程式碼之間,就要考慮jsp、IE、tomcat容器的編碼方式了。前面已經說明了,全部設定成了utf-8格式了,所以進一步查看了網上許多解決方案,解決方案比較多比較亂,針對我遇到的問題,我從中提取和學習了下面的一些知識內容。
5、提取內容
一、表單post方式提交——中文欄位出現亂碼,也就是上面例子描述的問題了。
1、原因為tomcat的內部編碼格式為ISO-8859-1,在沒有設定提交的編碼格式時會以ISO-8859-1的方式提交,而此時jsp編碼格式為utf-8
所以導致了亂碼產生。解決辦法如下三種,懷著好奇心都嘗試了一把。
2、方法:接收引數時進行轉碼、在請求頁面開始處設定編碼格式、過濾器處理。
3、具體實現程式碼如下所示: Java程式碼
// 在servlet層出現了亂碼問題
- package com.test;
- import java.io.IOException;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
public class TestServlet extends
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- // 處理get提交方式
- this.doPost(request, response);
- }
-
public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- // 處理post提交方式
- String username = request.getParameter("username");
- // servlet層測試亂碼
- System.out.println("servlet = "+username); // 顯示成了亂碼
- }
- }
4、初步判定
通過的servlet-web層打印出字串就顯示成了亂碼格式、那麼再通過dao層插入到資料庫後肯定是亂碼的,問題定位在jsp頁面到servlet程式碼之間,就要考慮jsp、IE、tomcat容器的編碼方式了。前面已經說明了,全部設定成了utf-8格式了,所以進一步查看了網上許多解決方案,解決方案比較多比較亂,針對我遇到的問題,我從中提取和學習了下面的一些知識內容。
5、提取內容
一、表單post方式提交——中文欄位出現亂碼,也就是上面例子描述的問題了。
1、原因為tomcat的內部編碼格式為ISO-8859-1,在沒有設定提交的編碼格式時會以ISO-8859-1的方式提交,而此時jsp編碼格式為utf-8
所以導致了亂碼產生。解決辦法如下三種,懷著好奇心都嘗試了一把。
2、方法:接收引數時進行轉碼、在請求頁面開始處設定編碼格式、過濾器處理。
3、具體實現程式碼如下所示: Java程式碼
- (1)轉碼方式
- String username = request.getParameter("username");
- // 進行轉碼操作處理
- username = new String(username.getBytes("iso-8859-1"),"utf-8");
- // servlet層測試亂碼
- System.out.println("servlet = "+username);