前言
不知道,有没有小伙伴有没有这种经历,明明部署在自己本地的项目没有问题,接口也能和前端联调,但是一旦部署到服务器上就会出现中文乱码,json格式解析不出来。
参考文档
思路整理
- 其实出现中文乱码的问题,一般都是没有设置编码格式,而且在本地没有出现乱码就说明代码没有逻辑问题,但是在线上出现了乱码格式,这一般都是本地和线上服务器环境变量不同所致,所有解决这类情况一般设置环境变量,或者配置项目配置即可
具体实现
乱码情况的出现
- 可以看到数据库已经存储了乱码的中文数据
解决:
我们重新配置一些项目的编码格式
spring.http.encoding.charset=utf-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
server.tomcat.uri-encoding=UTF-8
json数据处理失败
报错信息:
illegal identifier : \pos 153, line 1, column 154
com.alibaba.fastjson.JSONException:syntax error,position at 0,name dataobjectJson
这些都是json格式转义符出现了问题
原字符串为
{"applyRecord":{"wxUserId":230,"applyName":"锟斤拷锟斤拷锟斤拷","applyNumber":"","applyTypeId":13,"applyTypeName":"水锟斤拷锟斤拷锟絓","isSendMsg":1,"acceptDeptId":1},"applyInfoParam":[{"paramId":190,"paramName":"原锟斤拷锟斤拷","dataType":1,"dataValue":"原锟斤拷","samplePathId":""},{"paramId":191,"paramName":"水锟斤拷锟斤拷","dataType":1,"dataValue":"1234567890","samplePathId":""},{"paramId":192,"paramName":"锟铰伙拷锟斤拷","dataType":1,"dataValue":"锟铰伙拷","samplePathId":""},{"paramId":193,"paramName":"锟斤拷锟街伙拷锟斤拷","dataType":1,"dataValue":"15970617008","samplePathId":""},{"paramId":194,"paramName":"锟斤拷水锟斤拷址","dataType":1,"dataValue":"锟斤拷山路409锟斤拷","samplePathId":""},{"paramId":42,"paramName":"锟斤拷效锟斤拷权证锟斤拷","dataType":6,"dataValue":"/imgFile/wxWebImg/13/20221025085514_230.jpg","samplePathId":8},{"paramId":43,"paramName":"锟斤拷锟捷诧拷权锟斤拷锟斤拷锟街わ拷锟絓","dataType":6,"dataValue":"/imgFile/wxWebImg/13/20221025085529_230.jpg","samplePathId":8},{"paramId":44,"paramName":"锟斤拷锟捷诧拷权","dataType":6,"dataValue":"/imgFile/wxWebImg/13/20221025085540_230.jpg","samplePathId":5},{"paramId":188,"paramName":"锟斤拷水锟斤拷同","dataType":6,"dataValue":"/imgFile/wxWebImg/13/20221025085552_230.jpg","samplePathId":9},{"paramId":189,"paramName":"签锟斤拷","dataType":6,"dataValue":"/imgFile/wxWebImg/13/20221025085558_230.jpg","samplePathId":""}],"apiType":0}","secret":"VPFry/XOGXCTWyYDTSHky2GO1j6aWi9iLlG5/A9TD4SQ99PMRzCzAZ7haGkDEMdCzG8+pqvNazh9e8x+r69OiHPsP1g01KtK2eeMJZRWSSqx5K6nLArHlePe3/ssc9PVfDFtd4Ka1844Dt2gNcQ9ZGbSPw6exp+B3c3ZAo+5JuA=","type":0,"decrypt":0,"token":"8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"}
报错原因是,在json反序列化时存在转义字符。
解决方案:在处理字符串之前,先将字符串去除转义 StringEscapeUtils.unescapeJava(String data)