记录关于postgresql中使用jsonb导致字符串的乱码问题

事情的起因是这样的,之前完成了jsonb的类型转化器配置,在本地也可以正常运行了,结果上了服务器就出现乱码了。

  • 本地
  • 线上

明明代码都一样,偏偏 请求获得到的tags不一样

是不是数据库编码问题

这个问题非常好判断,在一次请求中的其它字符串成分都是正常的,说明问题不出在代码里。当然解决肯定是要用代码解决。

因此,怀疑是我的程序和数据库对接的转化器出了问题。

是不是转化器问题

确实如此,我们添加几段日志代码,分别在本地和线上运行进行对比。

找到了在程序中的分歧点,明明array对象的储值一样,但是转化出的字符串不一样,说明tags的asString字符串转化是有问题的,为了确认是不是这个原因,我们使用StrUtil的utf8str进行转化array对象进行尝试。

java 复制代码
@ReadingConverter
public class JsonToJsonArray
		implements Converter<Json, JSONArray> {
		Logger log = LoggerFactory.getLogger(JsonToJsonArray.class);
		
		@Override
		public JSONArray convert(Json source) {
				return JSONUtil.parseArray(StrUtil.utf8Str(source.asArray()));
		}
}

问题成功解决,由此也可以推断出,Json的asString方法默认调用的编码格式应该是与系统有关的,我的收获是在进行除字符串以外的类型获取的字符串,都要定义编码格式,以免出现漏洞导致数据出现乱码。

相关推荐
骇客野人6 小时前
JDK8和JDK8以后对jdk的优化,以及为什么如此优化
java·开发语言·windows
要努力点6 小时前
26考研——计算机考研复试——0854(2)
java·c语言·考研·算法·复试
摇滚侠6 小时前
微信小程序是前端,也需要 Java 开发的后端服务
java·前端·微信小程序
lxf_gis6 小时前
【JavaEE】Spring Web MVC
前端·spring·java-ee
小手cool6 小时前
idea2025.3.3版本很卡
java·idea
小江的记录本6 小时前
【泛型】泛型:泛型擦除、通配符、上下界限定
java·windows·spring boot·后端·spring·maven·mybatis
pupudawang6 小时前
springboot下使用druid-spring-boot-starter
java·spring boot·后端
0xDevNull6 小时前
Java 视频在线播放功能案例
java·开发语言·音视频
rrrjqy6 小时前
Java基础篇(一)
java·开发语言
我是咸鱼不闲呀6 小时前
力扣Hot100系列23(Java)——[回溯]总结(上)(全排列,子集,电话号码的字母组合,组合总和)
java·算法·leetcode