今天在Servlet中出現了亂碼的問題,結果發現Post和Get亂碼處理方式不一樣。
在Servlet Post方法中代碼如下:
name就是前端頁面傳過來的,
調試發現name是亂碼,后來添加了一句 request.setCharacterEncoding("UTF-8");
再次運行發現頁面還是亂碼,調試發現name不是亂碼,由此得到結論out輸出的時候轉換是亂碼。
如是加了一句 response.setContentType("text/html;charset=UTF-8");
這才解決了亂碼問題。
后來好奇,把前端改為了Get提交發現還是亂碼,而且這才亂碼現象不一樣,
在調試過程中發現,name不是亂碼,這個跟Post里面相反,由此得到結論out輸出的時候轉換是亂碼。
因此只用加一句 response.setContentType("text/html;charset=UTF-8"); 就可以了。
通過調試查看name值就發現,Post傳遞過了的name就是亂碼,Get傳遞過來的那么是正常的。
但是在頁面上顯示亂碼的方式其實不一樣的。
request.setCharacterEncoding("UTF-8"); 目的讓request過了的參數使用UTF-8格式。
response.setContentType("text/html;charset=UTF-8"); 目的讓頁面使用UTF-8格式轉碼。
最后結果如下:
PS:鄙人學而不才,java學習者有很多不清楚的地方不喜勿憤,當初你有更好的解決方法,請告訴我,謝謝。