본문 바로가기
programming/SpringJava

자바 스프링 한글 깨짐 utf-8 인코딩 변경하기 java spring utf-8 encoding

by 개코 - 개발과 코딩 2021. 3. 24.

자바기반의 스프링으로 뭔가를 개발하다보면 한글 깨짐 현상을 접할 수 있다. 개발을 업으로 하는 사람들의 경우 이 문제에 항상 곤혹을 치르곤 한다. 자바 스프링에서 한글 깨짐 현상은 인코딩의 문제일 수 있다. 파일이나 환경설정을 utf-8로 인코딩 변경을 해 준 후 테스트를 해 보면 정상적으로 실행이 된다. 물론, 이 문제는 비영어권국가라면 겪는 문제이기도 하다.

encoding utf-8
encoding utf-8

자바 스프링 한글 깨짐 utf-8 인코딩 변경하기
java spring utf-8 encoding

자바 스프링에서 한글을 표시하기 위한 방법은 3가지가 있지만, 서버환경이나 개발환경에 따라 변환할 필요가 없을 때도 있다.
먼저 이전에 스프링 프로젝트를 만드는 포스팅을 한 적이 있다.
한글이 깨진 현상을 확인했고 이번엔 이것을 해결해 본다.

 

>>> 자바 스프링 프레임워크 프로젝트 만들기 <<<

 

프로젝트의 텍스트 파일들을 utf-8로 바꾸기

해도 되고 안해도 되는 부분이다. 이클립스나 이클립스 기반의 STS 의 문자열은 MS949를 기본으로 따르고 있다.
그렇기에 환경설정이나 웹페이지의 설정을 강제 utf-8로 변경해 주는 것이 더 나을 수도 있다.

STS를 실행한다.

프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭하자.
메뉴 맨 마지막에 Properties 를 클릭한다.
Properties 창을 나타내는 단축치는 Alt + Enter 이다.
중간 부분을 보면 Text file Encoding 이 있다. Other 부분을 선택한 후 UTF-8 로 변경해 준다.
Apply and Close 버튼을 클릭하면 프로젝트 내 파일들이 utf-8 로 변경되고 완료후 창이 닫힌다.

 

web.xml 에 설정 추가하기

스프링으로 만든 프로젝트를 살펴보면 web.xml 이 있다.

이 부분에 utf-8로 강제로 설정하는 코드를 넣으면 된다.

web.xml 위치는 아래와 같다.

<!--
	문자열 utf-8 강제 인코딩
	프로젝트 > src > main > webapp > WEB-INF
-->
<filter> 
	<filter-name>encodingFilter</filter-name> 
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
	<init-param> 
		<param-name>encoding</param-name> 
		<param-value>UTF-8</param-value> 
	</init-param> 
	<init-param> 
		<param-name>forceEncoding</param-name> 
		<param-value>true</param-value> 
	</init-param> 
</filter> 
<filter-mapping> 
	<filter-name>encodingFilter</filter-name> 
	<url-pattern>/*</url-pattern> 
</filter-mapping> 

 

html 파일에 utf-8 인코딩 속성 추가하기

모든 웹언어가 그렇듯 모든 html 파일에 utf-8 인코딩 속성을 추가한다.
서버 환경에 따라 해도 되고 안해도 되지만, 가급적 해 주는 것이 좋다.
어떤 환경에서 접속할지도 모르며, 사이트를 접속한 사용자에게 한글이 깨지는 경우가 발생할 수도 있다.
지금은 거의 의무적으로 하고 있기도 하다.

가장 위에 있는 jstl 구문 3줄과 meta 태그에 utf-8이 설정된 것을 확인하자.
이정도만 해주면 한글이 깨지는 것에 대한 대비는 충분하다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
	<meta charset="UTF-8">
	<title>Home</title>
</head>
<body>
	<h1>
		안녕하세요 여려분~
	</h1>
	<P>  The time on the server is ${serverTime}. </P>
</body>
</html>

 

결과화면

한글이 제대로 나오는 것을 알 수 있다.
이제부터는 개발만 하면 된다.

한글깨짐 utf-8 변경후
한글깨짐 utf-8 변경후

반응형

댓글