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

server/2025/1/24 0:59:05/

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

  • 本地
  • 线上

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

是不是数据库编码问题

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

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

是不是转化器问题

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

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

java">@ReadingConverter
public class JsonToJsonArrayimplements Converter<Json, JSONArray> {Logger log = LoggerFactory.getLogger(JsonToJsonArray.class);@Overridepublic JSONArray convert(Json source) {return JSONUtil.parseArray(StrUtil.utf8Str(source.asArray()));}
}

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


http://www.ppmy.cn/server/160893.html

相关文章

【漫话机器学习系列】057.误报率(Flase Positive Rate, FPR)

误报率&#xff08;False Positive Rate, FPR&#xff09; 定义 误报率&#xff08;False Positive Rate&#xff0c;FPR&#xff09;是衡量分类模型错误预测的一项指标&#xff0c;表示 负例被错误预测为正例的比例。在分类问题中&#xff0c;FPR主要用于评估模型在区分负例…

【MySQL】存储引擎有哪些?区别是什么?

频率难度60%⭐⭐⭐⭐ 这个问题其实难度并不是很大&#xff0c;只是涉及到的相关知识比较繁杂&#xff0c;比如事务、锁机制等等&#xff0c;都和存储引擎有关系。有时还会根据场景选择不同的存储引擎。 下面笔者将会根据几个部分尽可能地讲清楚 MySQL 中的存储引擎&#xff0…

CMD批处理命令入门(6)——常用的特殊字符

CMD批处理命令入门&#xff08;6&#xff09;——特殊字符 本章内容主要学习要点&#xff1a;重定向符 >、>>命令管道符 |组合命令 &、&&、||转义字符 ^变量引导符 %界定符 "" 本章内容主要学习要点&#xff1a; >、>>重定向符| 命令…

C++ 智能指针(八股总结)

C中的智能指针有哪些&#xff0c;各自有什么作用? 智能指针主要解决一个内存泄露的问题&#xff0c;它可以自动地释放内存空间。因为它本身是一个类&#xff0c;当函数结束的时候会调用析构函数&#xff0c;并由析构函数释放内存空间。智能指针分为共享指针(shared_ptr), 独占…

服务器安装ESXI7.0系统及通过离线包方式升级到ESXI8.0

新到了一台物理服务器需要安装系统&#xff0c;项目不急用&#xff0c;先拿来做些实验。 本次实验目标&#xff1a; 1、在物理服务器上安装ESXI7.0系统&#xff1b; 2、通过离线包升级方式将ESXI7.0升级为ESXI8.0。 实验环境准备&#xff1a; 物理服务器1台&#xff0c;型号…

【C++】在线五子棋对战项目网页版

目录 1.Websocket 1.1.Websocket的简单认识 1.2.什么是轮询呢&#xff1f; 1.3.websocket协议切换过程 1.4.websocketpp库常用接口认识 1.5.websocketpp库搭建服务器流程 1.6.websocketpp库搭建服务器 2.mysqlclient库-接口认识 3.项目模块的划分&#xff1a; 4.项目…

“推理”(Inference)在深度学习和机器学习的语境

“推理”&#xff08;Inference&#xff09;在深度学习和机器学习的语境中&#xff0c;是指使用经过训练的模型对新数据进行预测的过程。将其简单地理解为“模型的应用阶段”。在这一阶段&#xff0c;我们不再进行模型训练&#xff0c;而是利用已训练好且保存下来的模型来获取对…

react上增加错误边界 当存在错误时 不会显示白屏

react上增加错误边界 当存在错误时 不会显示白屏 定义&#xff1a;错误边界是一个 React 组件&#xff0c;它会在其子组件树中的任何位置捕获 JavaScript 错误&#xff0c;并显示一个备用的 UI 而不是崩溃的组件树 在总项目的组件中创建文件&#xff1a; src/components/Erro…