[SPRING] application.properties의 UTF-8 인코딩은 봄 부팅 속성
SPRINGapplication.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 () 변수가 내부에이 값이 있는지 확인할 수 있습니다. 그래서 내 메일을 보내기 전에 나는 이미 UTF-8 인코딩 문제가 있습니다.
난 이미 application.properties 파일과 UTF-8 인코딩을 확인.
내 IDE (STS / 이클립스) 및 프로젝트 속성은 UTF-8로 설정됩니다.
어떻게 사용자의 텍스트에 대한 UTF-8 인코딩이 application.properties이 파일 속성을 설정할 수 있습니까?
해결법
-
==============================
1.이미 의견 .properties의 파일에서 언급 한 바와 같이 ISO 8859-1로 인코딩 할 것으로 예상된다. 하나는 다른 문자를 지정하는 유니 코드 이스케이프를 사용할 수 있습니다. 변환을 수행 할 수있는 도구도 있습니다. 여전히 소스에 좋아하는 인코딩을 사용할 수 있도록 예를 들어이 캔 자동 빌드에 사용.
이미 의견 .properties의 파일에서 언급 한 바와 같이 ISO 8859-1로 인코딩 할 것으로 예상된다. 하나는 다른 문자를 지정하는 유니 코드 이스케이프를 사용할 수 있습니다. 변환을 수행 할 수있는 도구도 있습니다. 여전히 소스에 좋아하는 인코딩을 사용할 수 있도록 예를 들어이 캔 자동 빌드에 사용.
-
==============================
2.당신의 구성 파일에 매개 변수를 인코딩와 PropertySource 주석을 추가 해보세요 :
당신의 구성 파일에 매개 변수를 인코딩와 PropertySource 주석을 추가 해보세요 :
@PropertySource(value = "classpath:application-${env}.properties", encoding = "UTF-8")
희망이 도움이.
-
==============================
3.나는이 같은 문제에 직면했습니다. 봄 부팅에서 응용 프로그램의 속성을로드하는 데 사용되는 2 PropertySourceLoader이 있습니다 :
나는이 같은 문제에 직면했습니다. 봄 부팅에서 응용 프로그램의 속성을로드하는 데 사용되는 2 PropertySourceLoader이 있습니다 :
그들은 파일 https://github.com/spring-projects/spring-boot/blob/master/spring-boot/src/main/resources/META-INF/spring.factories에 나와있는
그래서 우리는 제대로 UTF-8 파일에서 특성을로드 할 수있을 것 PropertySourceLoader 우리 자신의 구현을 작성하기로 결정했다. 아이디어는 응답 @BalusC에서이다 -의 ResourceBundle와 자원 속성에서 UTF-8을 사용하는 방법
우리 PropertySourceLoader 구현 :
public class UnicodePropertiesPropertySourceLoader implements PropertySourceLoader { @Override public String[] getFileExtensions() { return new String[]{"properties"}; } @Override public PropertySource<?> load(String name, Resource resource, String profile) throws IOException { if (profile == null) { Properties properties = new Properties(); PropertyResourceBundle bundle = new PropertyResourceBundle(new InputStreamReader(resource.getInputStream(), "UTF-8")); Enumeration<String> keys = bundle.getKeys(); while (keys.hasMoreElements()) { String key = keys.nextElement(); properties.setProperty(key, bundle.getString(key)); } if (!properties.isEmpty()) { return new PropertiesPropertySource(name, properties); } } return null; } }
그런 다음 우리는 콘텐츠와 파일 리소스 / META-INF / spring.factories을 만들어 :
# Custom PropertySource Loaders org.springframework.boot.env.PropertySourceLoader=\ your.own.package.UnicodePropertiesPropertySourceLoader
이제 우리는 다음과 같은 순서로 우리의 응용 프로그램에서 3 PropertySourceLoader 있습니다 :
노트!
우리의 프로젝트에이 솔루션은 잘 작동합니다.
최신 정보!
그것은 PropertyResourceBundle가없이 UnicodePropertiesPropertySourceLoader의 부하 방법을 구현하는 것이 좋습니다 :
@Override public PropertySource<?> load(String name, Resource resource, String profile) throws IOException { if (profile == null) { Properties properties = new Properties(); properties.load(new InputStreamReader(resource.getInputStream(), "UTF-8")); if (!properties.isEmpty()) { return new PropertiesPropertySource(name, properties); } } return null; }
-
==============================
4.-Dfile.encoding = UTF-8을 추가 자바 명령 행 agrs에 application.properties (및 다른 Java 특성뿐만 아니라, 환경 변수)에 텍스트에 대한 UTF-8 인코딩을 설정한다.
-Dfile.encoding = UTF-8을 추가 자바 명령 행 agrs에 application.properties (및 다른 Java 특성뿐만 아니라, 환경 변수)에 텍스트에 대한 UTF-8 인코딩을 설정한다.
-
==============================
5.단지 https://native2ascii.net/와 특수 문자로 텍스트를 변환
단지 https://native2ascii.net/와 특수 문자로 텍스트를 변환
from https://stackoverflow.com/questions/37436927/utf-8-encoding-of-application-properties-attributes-in-spring-boot by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 클라우드 구성 사용자 환경 저장소 (0) | 2019.10.17 |
---|---|
[SPRING] 파이프 라인 집계 봄 데이터 MongoDB를 조회 (0) | 2019.10.16 |
[SPRING] SqlResultSetMapping 및 기본 쿼리와 JPA 데이터 저장소 (0) | 2019.10.11 |
[SPRING] 봄 주석 @ModelAttribute 및 @Valid (0) | 2019.10.11 |
[SPRING] 스프링 데이터 JPA - 결과 여러 집계 함수와 사용자 정의 쿼리 (0) | 2019.10.05 |