Java中的中文亂碼問題

中文亂碼問題

1.在傳入的url中含有中文

豹紋頭 query String parameter

解決如下:

//jsp中傳值方式通過url 會在地址欄顯示 
//防止亂碼有兩種解決方法(get請求)


//1.servlet代碼中獲取url中的值  

String name  = req.getParameter("name");
//在這裏添加一個過濾 轉換中文亂碼
name = new String(name.getBytes("ISO8859-1"),"UTF-8");

//2.在javascript代碼中 也可以直接把要傳入的url值進行轉碼

var urlCode = encodeURIComponent("要傳入url中的值")
xmlHttp.open("get","/servlet?params="+urlCode);

2.表單提交(post)中含有中文

豹紋頭顯示formDate

//轉化表單中中文亂碼問題
req.setCharacterEncoding("UTF-8");
//doPost 中獲取表單中的值
String name = req.getParameter("name");

3.給客戶端設置響應編碼

防止在網頁或者客戶端出現亂碼現象

//獲取表單之前添加響應編碼
resp.setParameter("UTF-8");

以上是對於少量數據的按需轉碼,某些字符的亂碼都可以轉換解決

全局的格式轉碼配置

在流行的ssm框架中 在web.xmL中配置字符過濾轉碼 在整個操作過程中就無需注意轉碼的問題
配置如下 在web.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!--字符集過濾器-->
    <filter>
        <filter-name>encodingFilter</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>
        <init-param>
            <param-name>forceRequestEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

其中filter-mapping配置的是所有的請求都會經過字符過濾器
init-param爲轉換格式 forceRequestEnCoding 請求數據轉碼
forceResponseEncoding 爲響應數據轉碼 其實和上面的轉碼性質一樣只不過這裏通過過濾器做成全局的了。

最近在做echarts的測試用例 但是轉換後的json數據去發現中文亂碼問題
嘗試了以上所有依然不能解決,
貼上http響應頭:

這裏寫圖片描述

做測試的時候使用的是ssm框架 這裏的解決辦法只針對於springMVC框架
方案如下:

    @RequestMapping(value = "/bar",method = RequestMethod.POST,
            produces = {"application/text;charset=UTF-8"})//此配置解決響應數據亂碼問題
    @ResponseBody()
    public String init(){
        //業務邏輯
        return '返回的json數據';
    }

解決後響應頭如下:
這裏寫圖片描述

如有不當之處 還請諒解 如能對您有幫助還請推薦 謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章