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

相关推荐
m0_7482417027 分钟前
【Redis入门到精通六】在Spring Boot中集成Redis(含配置和操作演示)
数据库·spring boot·redis
张小特36 分钟前
flask项目中使用schedule定时任务案例
后端·python·flask
黄名富1 小时前
Kafka 日志存储 — 文件目录及日志格式
java·分布式·微服务·zookeeper·kafka
ekskef_sef1 小时前
Spring Boot——日志介绍和配置
java·数据库·spring boot
理想青年宁兴星1 小时前
【RabbitMQ】rabbitmq广播模式的使用
java·rabbitmq·java-rabbitmq
北京_宏哥2 小时前
《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
java·selenium·前端框架
V+zmm101342 小时前
基于微信小程序的中国各地美食推荐平台的设计与实现springboot+论文源码调试讲解
java·微信小程序·小程序·毕业设计
magic 2452 小时前
JVM体系结构
java·开发语言·jvm·intellij-idea·idea
计算机-秋大田2 小时前
基于微信小程序的购物系统设计与实现(LW+源码+讲解)
java·后端·微信小程序·小程序·课程设计
GGBondlctrl2 小时前
【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用
java·spring boot·spring·事务隔离级别·spring事务传播机制