1. 程式人生 > >JackSon解析json中文出現的編碼問題

JackSon解析json中文出現的編碼問題

專案使用了SpringMVC框架,使用@RequestBody互動資料的時候出現了下面的異常:
這裡寫圖片描述
很明顯是JackSon解析json出現了編碼問題。
原因是而json字串的分隔符必須是英文標點,當json字串中含有中文時,使用jackson解析會出異常。

目前有兩種解決方式:

第一種方式:
在伺服器中修改JVM配置:
tomcat:
在catalina.bat檔案中:
windows
set JAVA_OPTS = -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN -Dsun.jnu.encoding=UTF-8

linux
JAVA_OPTS = “-Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN -Dsun.jnu.encoding=UTF-8”

比如:
開啟catalina.bat檔案 開啟後會從第一行開始註釋,從上往下找到第一行沒有註釋的,在其上方,新增
這裡寫圖片描述

weblogic:
windows
set JAVA_OPTIONS = -XX:MaxPermSize=256m -Xmx1024m -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN -Dsun.jnu.encoding=UTF-8

linux
JAVA_OPTIONS = “-XX:MaxPermSize=256m -Xmx1024m -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN -Dsun.jnu.encoding=UTF-8”
export JAVA_OPTIONS

修改完成後啟動專案,看日誌的前幾十行,會有:
這裡寫圖片描述
即修改完成,問題解決!

不過還有個比較坑的是,如果你是用的eclipse的話,你還需要設定:
這裡寫圖片描述
這裡寫圖片描述

這是因為eclipse中建立tomcat會自動建立一個配置的專案出來的,所有啟動的配置都會讀取那個專案的,一般eclipse全域性改了為utf-8編碼就會預設這裡也是utf8的。

第二種方式:
就是將字串進行編碼修改了,比如:

byte[] strArray = jsonData.getBytes("utf-8")

後面再該怎麼傳就怎麼傳。

這個問題還有個注意點就是不要和post/get請求的那種編碼問題搞混了。