From ceb2496c4554dab90d577c776026c7046365ab2c Mon Sep 17 00:00:00 2001 From: dylan <986641202@qq.com> Date: Tue, 29 Jul 2025 16:16:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20NacosDataParserHandler=20yaml=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=A7=A3=E6=9E=90=E9=BB=98=E8=AE=A4=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloud/nacos/parser/NacosDataParserHandler.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spring-cloud-alibaba-starters/spring-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/parser/NacosDataParserHandler.java b/spring-cloud-alibaba-starters/spring-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/parser/NacosDataParserHandler.java index 4407054970..0236a74fa7 100644 --- a/spring-cloud-alibaba-starters/spring-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/parser/NacosDataParserHandler.java +++ b/spring-cloud-alibaba-starters/spring-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/parser/NacosDataParserHandler.java @@ -16,6 +16,7 @@ package com.alibaba.cloud.nacos.parser; +import java.nio.charset.StandardCharsets; import java.io.IOException; import java.util.Arrays; import java.util.Collections; @@ -30,6 +31,7 @@ import org.springframework.boot.env.OriginTrackedMapPropertySource; import org.springframework.boot.env.PropertiesPropertySourceLoader; import org.springframework.boot.env.PropertySourceLoader; +import org.springframework.boot.env.YamlPropertySourceLoader; import org.springframework.core.env.EnumerablePropertySource; import org.springframework.core.env.PropertySource; import org.springframework.core.io.support.SpringFactoriesLoader; @@ -83,6 +85,12 @@ public List> parseNacosData(String configName, String configVa NacosConfigUtils.selectiveConvertUnicode(configValue).getBytes(), configName); } + else if (propertySourceLoader instanceof YamlPropertySourceLoader) { + // YamlPropertySourceLoader internal only support use unicode, + // The default encoding for Chinese windows system is GBK, need to transform + nacosByteArrayResource = new NacosByteArrayResource( + configValue.getBytes(StandardCharsets.UTF_8), configName); + } else { nacosByteArrayResource = new NacosByteArrayResource( configValue.getBytes(), configName);