天天看點

Spring MVC前後端中文編碼解碼問題

簡單介紹一下,前端通過jQuery的ajax.post()方法來發送請求,預設編碼類型為utf-8,調用方法如下:

<a href="http://yangguilin.com/wp-content/uploads/2014/08/1.jpg"></a>

服務端使用Spring MVC進行處理,上面的腳本POST的參數中,有一部分是包含中文字元的,是以,需要Spring MVC配置一下預設的編碼格式,需要在web.xml中配置如下的内容,來設定預設編碼格式:

<a href="http://yangguilin.com/wp-content/uploads/2014/08/2.jpg"></a>

配置後,在相應的Controller中就可以直接擷取傳遞的中文參數内容,而不需要進行任何的解碼操作,如下:

<a href="http://yangguilin.com/wp-content/uploads/2014/08/3.jpg"></a>

 順便說一句,這裡面使用了Spring MVC自動參數執行個體化的功能,隻要保證參數名與類的參數名一緻,就可以自動完成參數的執行個體化操作,當然,這裡還有一個問題,那就是如果待執行個體化的類,其中含有枚舉類參數的話,那麼要求前端腳本在指派相對應的參數值的時候,需要使用其枚舉值的字元串格式,如:枚舉值MoneyTypeEnum.COST對應的參數值,應該就是”COST“,注意,這裡是區分大小寫的。

這樣的配置,基本可以處理絕大多數的中文情況,當然,針對一些特殊字元的處理,還必須進行相應的編碼解碼操作,可以使用 encodeURIComponent或encodeURI來進行前端編碼,然後在用戶端通過如下方式來進行解碼:

<a href="http://yangguilin.com/wp-content/uploads/2014/08/4.jpg"></a>

 注意一下對應的編碼格式,即可。

 題外話,如何檢視編碼内容是否已經正确地解碼,可以通過System.out.print()方法來輸出到控制台來檢視,當然,如果通過Evaluate Expression實時運作或debugger來觀察的時候,可能會遇到中文無法正常顯示,顯示為方塊亂碼的情況,這是由于IDEA編輯器自己的字型選擇造成的,因為預設的編輯器字型是不包含中文的,是以無法正常顯示中文,修改一下即可,步驟如下:

file -&gt; settings -&gt; IDE Settings -&gt; Apprearance -&gt; UI Options -&gt; Override default fonts by(not recommended)

選擇微軟雅黑,長相應該就是三個方塊,選中後,點選下面的Apply按鈕,就可以正常顯示啦。

<a href="http://yangguilin.com/wp-content/uploads/2014/08/5.jpg"></a>