Spring + Tomcat项目中nacos配置中文乱码问题解决
实际工作的时候碰到了nacos中文乱码的问题,一顿排查最终还是调源码解决了。下面为具体的源码流程,有碰到的可以参考下。
对于nacos配置来说,初始主要源码就在NacosConfigService类中。里面有初始化获取配置content以及设置对应监听器的操作。具体可以参考:详解Nacos 配置中心客户端配置缓存动态更新的源码实现 - 简书
对于监听器,我们可以通过注解@NacosConfigListener去自定义监听器。但我们通@NacosValue注解配置的一些配置能进行动态刷新,就意味着nacos内部肯定有自定义的监听器,也是靠这个监听器进行数据的动态刷新。对应的类为NacosPropertySourcePostProcessor,具体的方法流程图如下:
addListenerIfAutoRefreshed -> receiveConfigInfo -> NacosPropertySource newNacosPropertySource = new NacosPropertySource(dataId, groupId, name, config, type);上述初始化NacosPropertySource 的过程就是导致nacos配置中文乱码的原因
跟进初始化方法如下:
public NacosPropertySource(String dataId, String groupId, String name,String nacosConfig, String type) {super(name, toProperties(dataId, groupId, nacosConfig, type));this.type = type;
}toProperties(dataId, groupId, nacosConfig, type) -> ConfigParseUtils.toProperties(dataId, group, text, type) -> toProperties(context, type) -> configParse.parse(context) 其中configParse为DefaultPropertiesConfigParse -> loader.load() -> load(true) -> OriginTrackedPropertiesLoader.CharacterReader reader = new OriginTrackedPropertiesLoader.CharacterReader(this.resource);
而其中异常原因就在new OriginTrackedPropertiesLoader.CharacterReader( this.resource) 这行代码中,点进去代码如下,其中编码格式为ISO_8859_1。导致中文解析就乱码。

我测试的nacos-spring-text版本如下,为1.0.0版本。在maven仓库中,这个版本显示是2020年发布的。


我尝试将nacos-spring-text版本更换为1.1.0后,可以看到在DefaultPropertiesConfigParse类中,CharacterReader类初始化后已经换成了StandardCharsets.UTF_8编码了,此时可以正常解析中文。

相关文章:
Spring + Tomcat项目中nacos配置中文乱码问题解决
实际工作的时候碰到了nacos中文乱码的问题,一顿排查最终还是调源码解决了。下面为具体的源码流程,有碰到的可以参考下。 对于nacos配置来说,初始主要源码就在NacosConfigService类中。里面有初始化获取配置content以及设置对应监听器的操作。…...
Unity SRP 管线【第十讲:SRP/URP 图形API】
Unity 封装的图形API 文章目录 Unity 封装的图形API一、 CommandBuffer 要执行的图形命令列表1. CommandBuffer 属性2. CommandBuffer 常用图形API(方法)(1)设置(2)获取临时纹理 GetTemporaryRT以及释放(3)设置纹理为渲染目标 SetRenderTarget(4)Command…...
使用playwright进行自动化端到端测试
项目希望能接入自动化端到端测试提高可靠性,发现微软的 playwright 还挺好用的,推荐一下,顺便说下遇到的一些难点以及最佳实践。 难点 登录 项目不能帐号密码登录,只能扫二维码 临时方案是先自己扫码保存 cookie 用于测试&#…...
ES实战-相关性搜索
ES打分机制 1.TF-IDF 词频-逆文档频率 2.Okapi BM25 3.随机性分歧- DFR相似度 4.基于信息 - IB相似度 5.LM Dirichlet 相似度 6.LM Jelinek Mercer相似度 解释一个查询的结果集 curl -XPOST localhost:9200/get-together/_search?pretty -H Content-Type: application/json -…...
MQTT的学习与应用
文章目录 一、什么是MQTT二、MQTT协议特点三、MQTT应用领域四、安装Mosquitto五、如何学习 MQTT 一、什么是MQTT MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,设计用于在低带宽、不稳定的网络环境中进行高效的通信…...
编译原理实验1——词法分析(python实现)
文章目录 实验目的实现定义单词对应的种别码定义输出形式:三元式python代码实现运行结果检错处理 总结 实验目的 输入一个C语言代码串,输出单词流,识别对象包含关键字、标识符、整型浮点型字符串型常数、科学计数法、操作符和标点、注释等等。…...
C语言——oj刷题——模拟实现库函数strlen
目录 方法一:迭代法 方法二:递归法 方法三:指针算术法 方法四:汇编指令法 当我们使用C语言进行字符串操作时,经常会用到库函数strlen来获取字符串的长度。strlen函数的作用是计算一个以null字符结尾的字符串的长度…...
对进程与线程的理解
目录 1、进程/任务(Process/Task) 2、进程控制块抽象(PCB Process Control Block) 2.1、PCB重要属性 2.2、PCB中支持进程调度的一些属性 3、 内存分配 —— 内存管理(Memory Manage) 4、线程(Thread)…...
「数据结构」线性表
定义和基本操作 定义:相同数据类型的 n ( n ≥ 0 ) n(n \ge 0) n(n≥0)个数据元素的有限序列,其中n为表长,当n0时线性表是一个空表一般表示: L ( a 1 , a 2 , … … , a i , a i 1 , a n ) L(a_1,a_2,……,a_i,a_{i1},a_n) L(a…...
GEE:关于在GEE平台上进行回归计算的若干问题
作者:CSDN _养乐多_ 记录一些在Google Earth Engine (GEE)平台上进行机器学习回归计算的问题和解释。 文章目录 一、回归1.1 问:GEE平台上可以进行哪些机器学习回归算法?1.2 问:为什么只有这四种…...
Vivado -RAM
ip_ram 定义了一个名为ip_ram的模块,该模块具有以下端口: sys_clk:系统时钟输入。 sys_rst_n:系统复位输入。 module ip_ram( input sys_clk, input sys_rst_n);wire ram_en ; wire ram_wea …...
备战蓝桥杯---图论之最短路dijkstra算法
目录 先分个类吧: 1.对于有向无环图,我们直接拓扑排序,和AOE网类似,把取max改成min即可。 2.边权全部相等,直接BFS即可 3.单源点最短路 从一个点出发,到达其他顶点的最短路长度。 Dijkstra算法&#x…...
C#系列-C#实现秒杀功能(14)
在C#中实现商品秒杀功能,通常需要考虑并发控制、数据库事务、缓存策略、限流措施等多个方面。下面是一个简单的示例,演示了如何使用C#和数据库来实现一个基本的商品秒杀功能。 首先,假设你有一个商品表(Product)和一个…...
Java ‘Elasticsearch‘ 操作
依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-elasticsearch --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</ar…...
【AI视野·今日NLP 自然语言处理论文速览 第七十八期】Wed, 17 Jan 2024
AI视野今日CS.NLP 自然语言处理论文速览 Wed, 17 Jan 2024 (showing first 100 of 163 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Deductive Closure Training of Language Models for Coherence, Accur…...
实验5-4 使用函数计算两点间的距离
本题要求实现一个函数,对给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离。 函数接口定义: double dist( double x1, double y1, double x2, double y2 );其中用户传入的参数为平面上两个点的坐标(x1, y1)和(x2, y2)&…...
【JavaEE】_JavaScript(Web API)
目录 1. DOM 1.1 DOM基本概念 1.2 DOM树 2. 选中页面元素 2.1 querySelector 2.2 querySelectorAll 3. 事件 3.1 基本概念 3.2 事件的三要素 3.3 示例 4.操作元素 4.1 获取/修改元素内容 4.2 获取/修改元素属性 4.3 获取/修改表单元素属性 4.3.1 value…...
ARM交叉编译搭建SSH
首先搭建好arm-linux交叉编译环境,开发板和主机可以ping通。 一、下载需要的源码 下载zlib: zlib-1.2.3.tar.gz 下载ssl: openssl-0.9.8d.tar.gz 下载ssh: openssh-4.6p1.tar.gz 二、交叉编译 新建目录/home/leo/ssh,并且将三个源码复制到该目录下。…...
###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 延时函数的生成 1.通过延时计算器得到延时函数 2.可赋值改变…...
回归预测模型:MATLAB多项式回归
1. 多项式回归模型的基本原理 多项式回归是线性回归的一种扩展,用于分析自变量 X X X与因变量 Y Y Y之间的非线性关系。与简单的线性回归模型不同,多项式回归模型通过引入自变量的高次项来增加模型的复杂度,从而能够拟合数据中的非线性模式。…...
版本控制系统核心功能解析:从历史追踪到团队协作的四大基石
1. 项目概述:从ICO到VCS,一次版本控制的深度对话在软件开发的日常里,我们经常听到“版本控制”这个词,它就像是程序员们的时光机和后悔药。但具体到工具上,Git、SVN、Mercurial……选择很多,而“VCS ICO”这…...
告别论文焦虑:百考通AI,让你的本科毕业论文像“闯关升级”一样简单
又到了一年毕业季,对于广大本科生而言,那座名为“毕业论文”的大山,是否又一次压得你喘不过气?面对空白的Word文档,你是否感到无从下手?导师的催促、复杂的格式、浩如烟海的文献、以及令人心慌的查重……这…...
GitHub项目改名后,本地仓库如何无缝衔接?保姆级操作指南(含常见错误排查)
GitHub项目改名后本地仓库无缝衔接全攻略:从原理到实战 当你兴冲冲地在GitHub上给项目改了个更酷的名字,回到命令行却看到一堆红色报错信息时,那种感觉就像搬家后发现自己忘带钥匙。本文将带你深入理解Git远程仓库的连接机制,并提…...
别再死记硬背了!用这 5 个核心功能理解 Final Cut Pro 的设计哲学
Final Cut Pro 的设计哲学:5个核心功能如何重塑你的剪辑思维 当你第一次打开Final Cut Pro(简称FCPX),可能会被它与其他剪辑软件截然不同的界面所困惑。这不是一个需要你适应传统时间线的工具,而是一个重新思考剪辑流程…...
运算放大器:从虚短虚断到负反馈,掌握模拟电路核心设计
1. 从“石头”与“水库”到“运算放大器”:一个电子世界的演化故事如果你拆开过任何一台现代电子设备,从手机到汽车,从血糖仪到工业机器人,你大概率会找到一个或多个不起眼的八脚或十四脚黑色小方块——运算放大器。它不像CPU那样…...
JetBrains IDE试用期重置终极指南:如何永久免费使用专业开发工具
JetBrains IDE试用期重置终极指南:如何永久免费使用专业开发工具 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期到期而烦恼吗?每次30天试用结束后,那…...
初次使用Taotoken从注册获取Key到完成第一次API调用的全流程指引
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初次使用Taotoken从注册获取Key到完成第一次API调用的全流程指引 本文旨在为初次接触Taotoken平台的开发者提供一份清晰的入门指南…...
5分钟快速上手:使用免费在线EPUB编辑器制作专业电子书
5分钟快速上手:使用免费在线EPUB编辑器制作专业电子书 【免费下载链接】EPubBuilder 一款在线的epub格式书籍编辑器 项目地址: https://gitcode.com/gh_mirrors/ep/EPubBuilder 你是否梦想过出版自己的电子书,却被复杂的EPUB格式和技术门槛吓退&a…...
3步配置ComfyUI IPAdapter Plus:图像风格迁移的终极指南
3步配置ComfyUI IPAdapter Plus:图像风格迁移的终极指南 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus ComfyUI IPAdapter Plus是ComfyUI平台最强大的图像风格迁移插件,能够将参…...
从Stable Diffusion到DALL-E 3:深入聊聊Diffusion Model里‘前向过程’的设计哲学与工程权衡
从Stable Diffusion到DALL-E 3:扩散模型前向过程的设计哲学与工程智慧 当你在MidJourney中输入一段文字描述,几秒后就能得到一张精美的图片,这背后隐藏着一场精心设计的"破坏与重建"游戏。扩散模型(Diffusion Model&…...
