【发布时间】:2016-09-23 01:05:36
【问题描述】:
在我的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 编码?
【问题讨论】:
-
我记得在某处读到 Java 期望
*.properties文件以 ISO-8859-1 编码,这就是 Spring 将application.properties视为 ISO-8859-1 的原因。看到这个问题:Spring Boot default properties encoding change?。可能的解决方案:使用 YAML 而不是属性文件。 -
@Jesper 是的,我也检查了这个答案。仍然希望属性文件可能有另一种解决方案。
标签: java spring encoding utf-8 spring-boot