记录关于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方法默认调用的编码格式应该是与系统有关的,我的收获是在进行除字符串以外的类型获取的字符串,都要定义编码格式,以免出现漏洞导致数据出现乱码。

相关推荐
荣码2 分钟前
AI应用部署上线:Docker打包+API服务+监控告警,我踩了4个坑
java·python
CoderF8 分钟前
jstack 如何分析死锁:从线程栈到等待环
后端
xiaotianyuanma9 分钟前
【计算机毕业设计】基于java web的社区养老服务管理系统设计与实现
java·开发语言·课程设计
Conan在掘金13 分钟前
ArkTS 进阶之道(5):struct 里为啥不能嵌 struct?终态声明 + 状态边界
后端
jinshw15 分钟前
自己实现GIS配图软件(二)
前端·后端·rust
Wang's Blog16 分钟前
Go-Zero项目开发39: 熔断、限流与降级的高可用实践
开发语言·后端·golang·go-zero
青山木23 分钟前
Hot 100 --- 电话号码的字母组合
java·数据结构·算法·leetcode·逻辑回归
霸道流氓气质27 分钟前
Java中集成Weka 技术教程:从入门到工程实践
java·开发语言·数据挖掘
Full Stack Developme27 分钟前
SpringBoot 内嵌 Tomcat 的启动流程
spring boot·后端·tomcat
Full Stack Developme32 分钟前
Tomcat 如何处理HTTP请求
java·http·tomcat