网站规划书市场分析,如何安装wordpress的插件安装教程,WordPress是静态吗,网页制作软件是什么实际工作的时候碰到了nacos中文乱码的问题#xff0c;一顿排查最终还是调源码解决了。下面为具体的源码流程#xff0c;有碰到的可以参考下。 对于nacos配置来说#xff0c;初始主要源码就在NacosConfigService类中。里面有初始化获取配置content以及设置对应监听器的操作。…实际工作的时候碰到了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编码了此时可以正常解析中文。