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);