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

相关推荐
蓝澈11215 分钟前
迪杰斯特拉算法之解决单源最短路径问题
java·数据结构
Kali_0713 分钟前
使用 Mathematical_Expression 从零开始实现数学题目的作答小游戏【可复制代码】
java·人工智能·免费
rzl0224 分钟前
java web5(黑马)
java·开发语言·前端
君爱学习30 分钟前
RocketMQ延迟消息是如何实现的?
后端
guojl44 分钟前
深度解读jdk8 HashMap设计与源码
java
Falling421 小时前
使用 CNB 构建并部署maven项目
后端
guojl1 小时前
深度解读jdk8 ConcurrentHashMap设计与源码
java
程序员小假1 小时前
我们来讲一讲 ConcurrentHashMap
后端
爱上语文1 小时前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端