From 62398e1bc264718991c97b2517565a802e46379a Mon Sep 17 00:00:00 2001 From: zkzlx Date: Mon, 25 Jan 2021 18:13:19 +0800 Subject: [PATCH] fixed - Unicode encoding , exclude base latin letter. --- .../cloud/nacos/utils/NacosConfigUtils.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/utils/NacosConfigUtils.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/utils/NacosConfigUtils.java index 386d160e..b8a448dd 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/utils/NacosConfigUtils.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/utils/NacosConfigUtils.java @@ -21,7 +21,7 @@ package com.alibaba.cloud.nacos.utils; */ public final class NacosConfigUtils { - private NacosConfigUtils(){ + private NacosConfigUtils() { } /** @@ -33,16 +33,26 @@ public final class NacosConfigUtils { StringBuilder sb = new StringBuilder(); char[] chars = configValue.toCharArray(); for (char aChar : chars) { - if (isChinese(aChar)) { - sb.append("\\u").append(Integer.toHexString(aChar)); + if (isBaseLetter(aChar)) { + sb.append(aChar); } else { - sb.append(aChar); + sb.append(String.format("\\u%04x", (int) aChar)); } } return sb.toString(); } + /** + * char is base latin or whitespace? + * @param ch a character + * @return true or false + */ + public static boolean isBaseLetter(char ch) { + Character.UnicodeBlock ub = Character.UnicodeBlock.of(ch); + return ub == Character.UnicodeBlock.BASIC_LATIN || Character.isWhitespace(ch); + } + /** * char is chinese? * @param c a character