Spring-Boot中application.properties属性的UTF-8编码

新手上路,请多包涵

在我的 application.properties 我添加了一些自定义属性。

 custom.mail.property.subject-message=This is a ä ö ü ß problem

在这个类中,我有自定义属性的表示。

 @Component
@ConfigurationProperties(prefix="custom.mail.property")
public class MailProperties {
    private String subjectMessage;
    public String getSubjectMessage() {
        return subjectMessage;
    }
    public void setSubjectMessage(String subjectMessage) {
        this.subjectMessage = subjectMessage;
    }

在这里我使用我的 MailProperties

 @Service
public class SimpleUnknownResponseMessage extends MailProperties implements UnknownResponseMessage{

    private JavaMailSender javaMailSender;

    @Autowired
    public SimpleUnknownResponseMessage(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;
    }

    @Override
    public void placeUnknownResponse(BookResponse bookResponse) {
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8");
            helper.setSubject(this.getSubjectMessage());
            javaMailSender.send(message);

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

在调试时,我可以看到我的 this.getSubjectMessage() 变量内部有这个值: This is a ä ö ü à problem 。所以在发送我的邮件之前,我已经遇到了 UTF-8 编码问题。

我已经检查了 application.properties 文件的编码及其 UTF-8。

我的 IDE(STS/Eclipse) 和项目属性也设置为 UTF-8。

如何在 application.properties 文件中为自定义属性的文本设置 UTF-8 编码?

原文由 Patrick 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

正如评论中已经提到的那样,.properties 文件应该以 ISO 8859-1 编码。可以使用 unicode 转义符来指定其他字符。还有一个 工具 可用于进行转换。例如,这可以用于自动构建,这样您仍然可以在源代码中使用您喜欢的编码。

原文由 Henry 发布,翻译遵循 CC BY-SA 3.0 许可协议

请尝试将带有编码参数的 PropertySource 注释添加到您的配置文件中:

 @PropertySource(value = "classpath:application-${env}.properties", encoding = "UTF-8")

希望能帮助到你。

原文由 May12 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题