【问题标题】:Unicode escape characters are not getting parsed in Spring application.yml properties在 Spring application.yml 属性中未解析 Unicode 转义字符
【发布时间】:2021-05-10 08:47:57
【问题描述】:

我正在尝试在 Spring Boot 的 application.yml 文件中添加一个属性值,该文件包含一个尾随空格。我正在使用 @Value 注释检索值。保留未转义的空间只是修剪它并添加 Unicode 转义字符会导致应用程序解析以下字符串 Example\u0020

直接在代码中使用\u0020 初始化字符串变量会产生预期的空格字符。

【问题讨论】:

  • @JoachimSauer 效果很好。我不尝试那样感到愚蠢。如果您可以将此添加为答案,我可以将问题标记为已解决。

标签: java spring-boot yaml


【解决方案1】:

字符串中的 Unicode 转义仅接受 in double-quoted strings in YAML,因此 "Example\u0020" 应该可以工作。

但简单地引用字符串也应该足够了:"Example "

【讨论】:

    【解决方案2】:

    如果您想使用 Unicode 转义符号 - 对我有用的是您对整个字符串进行编码。另外,尝试使用 '\u00a0' 而不是 '\u0020' 这个符号被称为“不可破坏的空白”(在 HTML -   中)这绝对不会被删除

    显然,互联网上有几个网站可以为您做到这一点,但我还编写了一个开源库,其中包含一个实用程序,可以将纯文本字符串编码为 Unicode 转义字符串,反之亦然。我发现它在调试各种编码问题时也非常有用。无论如何,如果您想在这里使用它,代码会是什么样子:

    result = "Example ";
    result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
    System.out.println(result);
    result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
    System.out.println(result);
    

    结果是:

    \u0045\u0078\u0061\u006d\u0070\u006c\u0065\u0020
    Example 
    

    该库可以在Maven CentralGithub 找到它作为 maven 工件并带有源代码和 javadoc

    这是StringUnicodeEncoderDecoder类的javadoc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      相关资源
      最近更新 更多