应用程序属性属性在 Spring-Boot 中的 UTF-8 编码

2022-09-01 09:23:16

在我的应用程序中,我添加了一些自定义属性。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() 变量内部有这个值:这是一个 Â Â1/4 Ã 问题。因此,在发送邮件之前,我已经遇到了UTF-8编码问题。

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

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

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


答案 1

如注释中所述,.properties 文件应以 ISO 8859-1 编码。可以使用 unicode 转义来指定其他字符。还有一个工具可用于进行转换。例如,这可以在自动构建中使用,以便您仍然可以在源中使用自己喜欢的编码。


答案 2

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

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

希望它有帮助。


推荐