我正在尝试从应用程序属性文件读取值。它在本地(windows机器)上工作得很好,但是当我在aws上部署我的代码时,我得到一些不需要的字符附加到变量的值,例如在值的末尾/n。我正在使用Springboot
我们尝试在启动时将所有属性放入映射并记录它们。我们没有发现任何%0a字符附加到值中。下面是代码片段-
Properties prop = new Properties();
try(final InputStream stream =
Application.class.getClassLoader().getResourceAsStream("application-
dev.properties")) {
prop.load(stream);
System.out.println(prop.values().toString());
Set set = prop.entrySet();
Iterator itr = set.iterator();
while (itr.hasNext()) {
Map.Entry entry = (Map.Entry)itr.next();
log.info("key as Normal String "+entry.getKey());
log.info("key as URl Encoded "+ URLEncoder.encode(String.valueOf(entry.getKey()), String.valueOf(StandardCharsets.UTF_8)));
log.info("Value as Normal String "+entry.getValue());
log.info("Value as URl Encoded "+ URLEncoder.encode(String.valueOf(entry.getValue()), String.valueOf(StandardCharsets.UTF_8)));
在您的EC2实例中,您需要添加file.encoding
参数并设置为UTF-8
。
我们可以在jvmArguments
中使用maven传递这个属性:
mvn spring-boot:run -Drun.jvmArguments="-Dfile.encoding=UTF-8"
也可以导出为JAVA_TOOL_OPTIONS
:
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"