1、發生中文亂碼的狀況有如下三種:html
1.表單form的兩種提交出現中文亂碼java
① get提交 ② post提交瀏覽器
2.超連接(本質是get提交)出現中文亂碼服務器
三、sendRedirect(發生亂碼)工具
2、亂碼產生的緣由:post
瀏覽器編碼 utf-8 發送請求給服務器是會產生編碼不一致的狀況
因此在發送請求是先定義編碼,就能很好的解決編碼的問題測試
3、解決亂碼的幾種簡單方式:編碼
post方法提交:解決方案以下: request.setCharacterEncoding(「utf-8」);spa
get方法使用該方法的時候仍是不能解決問題依然出現亂碼,針對get提交所用的處理方法.net
封裝成爲一個工具類來處理:
public class Mytool{ public static String getNewString(String str){ String newString=""; try{ newString= new String(str.getBytes("iso-8859-1"), "utf-8"); }catch(Exception e){ e.printStackTrace(); } return newString; } }
調用工具類:
String u = request.getParameter("username");
Mytool.getnewString(u);
超連接的提交方式和get的提交處理是同樣的
4、兼容瀏覽器的版本信息問題,若是IE6或如下版本,第2、三種會出現亂碼
超連接亂碼 和 sendRedirect亂碼
String info=java.net.URLEncoder encode("你好嗎.jpg",「utf-8」);
<a href="" + info>測試</a>
response.sendRedirect("servlet地址 ?username= " + info);
後記:
在服務器端是中文,在response的時候,也要考慮瀏覽器是否顯示正確response.setCharacterEncoding(「utf-8」);response.setContentType("text/html;charset=utf-8")