diff --git a/mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/SpringBootVFS.java b/mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/SpringBootVFS.java index 9d8e0bdec..8305f660b 100644 --- a/mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/SpringBootVFS.java +++ b/mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/SpringBootVFS.java @@ -20,6 +20,7 @@ import java.net.URL; import java.net.URLDecoder; import java.nio.charset.Charset; +import java.text.Normalizer; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -79,8 +80,9 @@ public static void setUrlDecodingCharset(Charset charset) { private static String preserveSubpackageName(final String baseUrlString, final Resource resource, final String rootPath) { try { - return rootPath + (rootPath.endsWith("/") ? "" : "/") - + resource.getURL().toString().substring(baseUrlString.length()); + return rootPath + (rootPath.endsWith("/") ? "" : "/") + Normalizer + .normalize(URLDecoder.decode(resource.getURL().toString(), urlDecodingCharset.name()), Normalizer.Form.NFC) + .substring(baseUrlString.length()); } catch (IOException e) { throw new UncheckedIOException(e); }