diff --git a/hutool-setting/src/main/java/org/dromara/hutool/setting/SettingLoader.java b/hutool-setting/src/main/java/org/dromara/hutool/setting/SettingLoader.java index 78b1ceae7..09e6a65fc 100644 --- a/hutool-setting/src/main/java/org/dromara/hutool/setting/SettingLoader.java +++ b/hutool-setting/src/main/java/org/dromara/hutool/setting/SettingLoader.java @@ -125,7 +125,7 @@ public class SettingLoader { if (line == null) { break; } - line = line.trim(); + line = StrUtil.trim(line); // 跳过注释行和空行 if (StrUtil.isBlank(line) || StrUtil.startWith(line, COMMENT_FLAG_PRE)) { continue; @@ -133,7 +133,7 @@ public class SettingLoader { // 记录分组名 if (StrUtil.isWrap(line, CharUtil.BRACKET_START, CharUtil.BRACKET_END)) { - group = line.substring(1, line.length() - 1).trim(); + group = StrUtil.trim(line.substring(1, line.length() - 1)); continue; } @@ -149,7 +149,7 @@ public class SettingLoader { if (this.isUseVariable) { value = replaceVar(group, value); } - this.groupedMap.put(group, keyValue[0].trim(), value); + this.groupedMap.put(group, StrUtil.trim(keyValue[0]), value); } } finally { IoUtil.closeQuietly(reader); diff --git a/hutool-setting/src/test/java/org/dromara/hutool/setting/IssueI7G34ETest.java b/hutool-setting/src/test/java/org/dromara/hutool/setting/IssueI7G34ETest.java new file mode 100755 index 000000000..07883812b --- /dev/null +++ b/hutool-setting/src/test/java/org/dromara/hutool/setting/IssueI7G34ETest.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.setting; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class IssueI7G34ETest { + + @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") + @Test + void readWithBomTest() { + final Setting setting = new Setting("test_with_bom.setting"); + final String s = setting.getStrByGroup("key1", "line1"); + + Assertions.assertEquals("value1", s); + } +} diff --git a/hutool-setting/src/test/resources/test_with_bom.setting b/hutool-setting/src/test/resources/test_with_bom.setting new file mode 100755 index 000000000..32e92aa16 --- /dev/null +++ b/hutool-setting/src/test/resources/test_with_bom.setting @@ -0,0 +1,3 @@ +[line1] +key1 = value1 +key2 = value2