[Spring] properties encoding ํ๊ธฐ(๊ตญ์ ํ ํ๊ธ๊นจ์ง)
์๋ก
์คํ๋ง ํ์ต ์ค ๋ค๊ตญ์ด ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด ๊ตญ์ ํ(Internationalization) ์ฒ๋ฆฌ๋ฅผ ํ๋ค๊ฐ ์ด์ํ๊ฒ ํ๊ธ๋ง ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋์ง ์์์ต๋๋ค. ์๋์ ๊ฐ์ด ์ ์์ ์ผ๋ก Bean ๋ฑ๋ก๋ ํด์ฃผ์๊ณ , Controller, yml ์ค์ , message ๋ฒ๋ค๊น์ง ์๋ฒฝํ๊ฒ ๊ตฌ์ฑํ๋๋ฐ๋ ์ค์ง ํ๊ธ ๋ถ๋ถ๋ง ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
main
@SpringBootApplication
public class ApiPracticeApplication {
public static void main(String[] args) {
SpringApplication.run(ApiPracticeApplication.class, args);
}
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.KOREA);
return localeResolver;
}
}
Controller
@GetMapping("/hello-world-internationalized")
public String helloWorldInternationalized(@RequestHeader(name = "Accept-Language", required = false) Locale locale) {
log.info("Accept-Language : {}", locale);
return messageSource.getMessage("greeting.message", null, locale);
}
application.yml
spring:
messages:
basename: messages
message Bundle
// ํ์ผ ๊ฐ๊ฐ
greeting.message=์๋
ํ์ธ์
greeting.message=Hello
greeting.message=Bonjour
ํด๋น ๋ฌธ์ ๋ Intellij์ ๊ฐ๋จํ encoding ์ค์ ์ ํตํด ํด๊ฒฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
mac ๊ธฐ์ค์ผ๋ก Preferences -> Editor -> File Encodings ๋ถ๋ถ์ ์ ๊ทผํ์๋ฉด ์์ ๊ฐ์ด ์ฒดํฌ ๋ฐ์ค๊ฐ ํ๋ ค์๊ณ ISO-8859-1๊ฐ ์ค์ ๋์ด ์์ํ ๋ฐ ์ด๊ฒ ํ๊ธ์ ์ง์ํ์ง ์์์ ํ๊ธ ๋ฐ์ดํฐ ์ถ๋ ฅ ์ ํ๊ธ์ด ๊นจ์ง๊ฒ ๋๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์๋์ ๊ฐ์ด UTF-8๋ก ๋ฐ๊พธ๊ณ ์ฒดํฌ๋ฐ์ค๋ฅผ ํ์ฑํ ์์ผ์ค์๋ค.
๊ทธ๋ฌ๋ฉด ์ด์ properties ํ์ผ์ ์ ์ฅ์ UTF-8๋ก encodingํ ์ ์๊ฒ ๋์ด ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋ ๊ฒ์ ๋๋ค.