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

相关推荐
飞天狗1111 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言
Windeal1 天前
Agent ToolCall 循环怎么定制?PI Extension 与 DeepAgents Middleware 两条岔路深度对比
后端·openai
鱼人1 天前
targets 包实战:R 语言数据分析流水线自动化管理方案
后端
时雨__1 天前
一文搞懂 Python 并发:GIL、多线程/多进程/协程怎么选
后端
Anson4321 天前
Dubbo架构深度分析
后端
许彰午1 天前
39_Java单元测试JUnit入门
java·junit·单元测试
站大爷IP1 天前
global和nonlocal到底有什么区别?
后端
shushangyun_1 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
二月龙1 天前
从零开发 Shiny 交互式数据看板:本地运行到网页上线完整路径
后端
JAVA9651 天前
JAVA面试-JVM篇 03-JVM运行时数据区哪些是线程私有的哪些是共享的
java·jvm·面试