您的位置:首页 > Web前端 > JavaScript

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

2018-03-09 00:47 2301 查看
项目使用了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请求的那种编码问题搞混了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: