JackSon解析json中文出现的编码问题

项目使用了SpringMVC框架,使用@RequestBody交互数据的时候出现了下面的异常:
JackSon解析json中文出现的编码问题_第1张图片
很明显是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

修改完成后启动项目,看日志的前几十行,会有:
JackSon解析json中文出现的编码问题_第2张图片
即修改完成,问题解决!

不过还有个比较坑的是,如果你是用的eclipse的话,你还需要设置:
JackSon解析json中文出现的编码问题_第3张图片
JackSon解析json中文出现的编码问题_第4张图片

这是因为eclipse中创建tomcat会自动创建一个配置的项目出来的,所有启动的配置都会读取那个项目的,一般eclipse全局改了为utf-8编码就会默认这里也是utf8的。

第二种方式:
就是将字符串进行编码修改了,比如:

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

后面再该怎么传就怎么传。

这个问题还有个注意点就是不要和post/get请求的那种编码问题搞混了。

你可能感兴趣的:(exception,serialize,spring,mvc)