0
点赞
收藏
分享

微信扫一扫

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


项目使用了SpringMVC框架,使用@RequestBody交互数据的时候出现了下面的异常:

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


很明显是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文件 打开后会从第一行开始注释,从上往下找到第一行没有注释的,在其上方,添加

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

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中文出现的编码问题_tomcat_03


即修改完成,问题解决!不过还有个比较坑的是,如果你是用的eclipse的话,你还需要设置:

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


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

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

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

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

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

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


举报

相关推荐

0 条评论