SpringMVC項目中中文字符亂碼問題及解決辦法總結(非專業最優解決辦法) -- ajax傳值亂碼; request.getParameter()亂碼;


情況一: ajax中傳值時是亂碼(后台可以獲取到中文字符,但用@ResponseBody返回時前台為亂碼)


 

 

情況二: Controller 中 request.getParameter()獲取到的是亂碼


 

@RequestMapping(params = "method=submit")
    public String submit(HttpServletRequest request, ModelMap modelMap) throws Exception{
        String uname = request.getParameter("uname");
                .
                .
                .
        return "index_view";
        
}

Request默認編碼是iso-8859-1,而前台是utf-8編碼,導致獲取值輸出發現是亂碼。從網上找了很多種辦法,以下方法都沒有生效

1. 添加filter

jsp頁面中文輸入,到controller亂碼,這時候需要設置的是在web.xml文件中添加一個編碼的過濾器(filter)將編碼統一為UTF-8,代碼如下:

Web.xml配置文件:

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

這里需要注意的是,最好把這段代碼放在web.xml中開頭的位置,因為攔截有順序,如果放在后面的話容易攔截不到。

2. 設置request字符集

往往從前台傳入到對應的controller或者是action之后出現亂碼,講講我一般的思路是先打印request本身默認的字符集

 System.out.println(request.getCharacterEncoding());

接着按照情況,如果打印的不是所需要的字符集則設置相應字符集即可

 request.setCharacterEncoding("UTF-8");

 

有效解決辦法: 獲取時從iso-8859-1轉化成utf-8格式。(但此方法較為麻煩)

 

@RequestMapping(params = "method=submit")
    public String submit(HttpServletRequest request, ModelMap modelMap) throws Exception{
        String uname = new String((request.getParameter("uname")).getBytes("iso-8859-1"),"utf-8");
                .
                .
                .
        return "index_view";
        
}

 

情況三:


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM