증상 체크
- 톰캣 서버를 띄웠는데, 콘솔에서 한글이 잘 찍히지 않는다.
- 초기화 과정에서 나오는 메세지가 깨져서 나온다.
기본 Intellij 콘솔 인코딩 깨짐 해결
- 아래의 화면처럼 깔끔한 초기화 로그가 뜨지 않고 여러 문자가 깨져보일 때 해결하는 방법이다.
Intellij File Encodings 체크
- 상단부터 차례대로 체크해본다.
- 통신에는 UTF-8 이 가장 범용적으로 사용되므로 UTF-8 로 모두 고정해주는 것이 좋다.
- 가변길이 인코딩으로 통신 시 공간효율이 좋다.
Global Encoding
,Project Encoding
,Default encoding for properties files
- 아래의
Transparent native-to-ascii conversion
도 체크하는 것이 좋다.- 네이티브 문자 인코딩에서 ASCII 인코딩으로 변환할 때 텍스트의 의미나 내용을 변경하지 않는 것을 의미한다.
- ASCII 인코딩을 지원하는 모든 시스템에서 ASCII로 인코딩된 파일 또는 문자열을 읽고 처리할 수 있다.
- 통신에는 UTF-8 이 가장 범용적으로 사용되므로 UTF-8 로 모두 고정해주는 것이 좋다.
VM Options 체크
- VM Options 는 자바 가상 머신(JVM)을 띄울 때 커멘드라인에 사용자 정의 옵션을 더해 실행하는 것이다.
Help
>Edit Custom VM Options...
(맨 아래에서 4번째)
- 파일 인코딩과 콘솔 인코딩을
UTF-8
로 고정해준다.
-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8
설정 이후에도 안되는 경우
- 자바 JDK 버전이 너무 높은 경우 (18 이상), 버전을 낮추면 한글이 되는 경우가 있다.
추가적 톰캣 인코딩 깨짐 해결
이 부분은 모든 한글 깨짐을 다 해결하고 싶을 때 추천한다. 위에 과정만 거쳐도 딱히 그냥 개발하는데 문제가 없다.
catalina.bat
수정하기
- 주석이 끝나는 부분에 언어설정을 추가해준다.
...
rem TITLE (Optional) Specify the title of Tomcat window. The default
rem TITLE is Tomcat if it's not specified.
rem Example (all one line)
rem set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]
rem ---------------------------------------------------------------------------
setlocal
set "JAVA_OPTS=%JAVA_OPTS% -Duser.language=en"
web.xml
수정하기
- 톰캣에 인코딩 필터 를 추가하는 부분이다.
- 아래의 내용은 톰캣에 이미 있으므로 주석만 해제해주면 된다.
<!-- The mapping for the Set Character Encoding Filter -->
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
반응형
'Java > 톰캣 (Tomcat)' 카테고리의 다른 글
톰캣에서 지원하는 HttpSession 이란? (feat. Servlet API) (0) | 2023.04.20 |
---|---|
web.xml 에서 사용하는 absolute-ordering 이란? (0) | 2023.03.20 |
web.xml 파일이란? 그리고 web.xml 파일의 역할 (0) | 2023.03.20 |
자바 서블릿(Servlet) 이란? (0) | 2023.03.20 |
WEB-INF 디렉토리란? (0) | 2023.03.20 |