java—在SpringBoot应用程序中使用ascii字符串作为环境变量的值

mefy6pfw  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(290)

在我的spring boot应用程序中,我在configurationproperties中定义了一个模板字段,其默认值为(ascii):

@Getter
@Setter
@Configuration
@ConfigurationProperties("app.template")
public class AppTemplateProps {

    String greeting = "\u00bfQu\u00e9 est\u00e1s haciendo %s?";

}

价值 AppTemplateProps.greeting 是正确的(是本机的):

¿Qué estás haciendo %s?

但当我定义 app.template.greeting 具有相同值的环境变量 AppTemplateProps.greeting 不正确(不是本机的):

\u00bfQu\u00e9 est\u00e1s haciendo %s?

那么我应该怎么做才能从环境变量中获得正确的(本机)值呢?

jc3wubiy

jc3wubiy1#

ascii是一种仅定义95个字符的编码,不包括 á 或者 é 或者 ¿ . 所以你所说的是不可能的;java字符串不是ascii,这就是为什么 greeting 部分确实有效。所以,是的,如果你想储存 é 通常情况下,你不能这样做;在java源文件中有 \u 机制,但是。。。只在源代码中有效。你不能只是读一个字符串,然后神奇地把这些东西应用到你身上。
没有一个简单的答案-要么确保你的输入是基于utf\u8的,只要坚持 é 或者,写一些适用的代码 \u 解码。json字符串也支持这一点,所以这是一种方法。您也可以编写一些代码来实现这一点;这并不特别复杂。

相关问题