java web中文亂碼處理筆記

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")

相關文章
相關標籤/搜索