1. 문제 정의
Spring Boot로 개발한 웹 애플리케이션에서 한글이 '?'로 표시되는 문제를 겪을 수 있습니다. 이는 대부분 인코딩 설정 문제 때문입니다.
인코딩: 데이터를 특정한 규칙에 따라 다른 형태나 형식으로 변환하는 과정을 의미합니다. 특히 웹 애플리케이션에서의 인코딩은 주로 문자 데이터를 어떤 문자 체계(예: UTF-8, EUC-KR 등)를 사용하여 바이트 코드로 변환할 것인지를 결정하는 방식을 말합니다.
2. 해결 방법
이 문제를 해결하는 가장 간단한 방법은 application.properties 또는 application.yml파일에
server.servlet.encoding.force-response=true 설정을 추가하는 것입니다.
2.1) application.properties 파일인 경우
server.servlet.encoding.force-response=true
2.2) application.yml 파일인 경우
server:
servlet:
encoding:
force-response: true
3. 동작 원리
server.servlet.encoding.force-response=true 설정은 Spring Boot가 HTTP 응답을 생성할 때 항상 설정된 인코딩(기본적으로 UTF-8)을 사용하도록 강제합니다.
즉, 이 설정은 Spring Boot가 HTTP 응답의 문자 인코딩을 일관되게 유지하도록 돕습니다.
이렇게 함으로써, 브라우저는 받은 HTTP 응답을 올바른 인코딩으로 해석할 수 있게 되어, 한글이 '?'로 표시되는 문제를 해결할 수 있습니다.
server: Spring Boot 애플리케이션의 서버에 관련된 설정을 나타냅니다.
servlet: 서블릿에 관련된 설정을 나타냅니다.서블릿은 Java 웹 애플리케이션에서 클라이언트의 요청을 처리하고 응답을 만드는 역할을 합니다.
encoding: 인코딩에 관련된 설정을 나타냅니다 인코딩은 문자나 정보를 특정 형식으로 변환하는 방법을 말합니다.
force-response: HTTP 응답의 인코딩을 강제할지 여부를 설정합니다.
true: Spring Boot는 HTTP 응답을 생성할 때 설정된 인코딩(기본적으로 UTF-8)을 강제로 사용하도록 합니다.
[참고]
https://dambi-ml.tistory.com/18
'Spring > Spring' 카테고리의 다른 글
[Spring] Bean이란? (0) | 2024.03.05 |
---|---|
[Spring] IoC, DIP, DI란? (0) | 2024.03.05 |
[Spring] 의존성 주입(Dependency Injection, DI) 이해하기 (0) | 2024.02.06 |
[Spring] 싱글톤 패턴(Singleton pattern) (0) | 2024.02.05 |
[Spring] 스프링과 스프링부트 (0) | 2024.01.09 |