eclipse에 spring 프로젝트를 생성하고 바로 run on server를 눌렀을때 나오는 페이지는 아래와 같이 한글이 깨져서 나오게된다.
분명 2021년 8월 25일 이런식으로 나와야하는데 한글이 제대로 나오지 않는다.
이러한 경우 우선적으로 *.jsp 파일의 상단에 한줄을 추가해주면 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
jsp 파일을 UTF-8로 인코딩하고, 웹브라우저(HTTP client)가 받을 때도 UTF-8로 받아오겠다는 것이다.
그러면 바로 정상적으로 출력되는 모습을 볼 수 있다.
추가로 이후에 외부에서 소스를 가져와서 받아볼 때 주석이나 한글로 작성된 부분이 깨지는 현상이 발생할 수 있다.
이부분도 eclipse 내에서 설정을 바꿔줘야한다.
eclipse 상단 메뉴에서 Window - Preferences를 클릭해 아래 설정들을 변경해준다.
General - Workspace
General - Content Types
General - Editors - Text Editors - Spelling
Web - CSS files
Web - HTML Files
Web - JSP Files
마지막으로 프로젝트 속성을 바꿔주면 된다.
프로젝트 우클릭 - Properties - Resource
이렇게하면 한글이 깨지는것을 막을수 있을것이다.
MS949와 UTF-8
여기서부터는 개인적인 호기심으로 초기 설정되어 있었던 인코딩 방식인 MS949와 바꿔준 UTF-8 방식을 찾아보았다.
우선, MS949란 마이크로소프트(MicroSoft)에서 만들었기때문에 붙여진 이름이고 CP949(Code Page 949)란 이름을 갖기도한다.
CP949는 EUC-KR의 확장형이다.
그러면 EUC-KR, CP949, MS949가 UTF-8과 무슨 차이가 있길래 한글이 깨져서 나오는걸까
이유는 간단하다.
주고 받는 한 쌍이 인코딩 방식을 다르게해서다.
UTF-8이 가장 많이 사용되는 방식이기 때문에 따라서 맞춰주는것이 좋다.
그러면 UTF-8을 사용하는 이유는 표현할 수 있는 한글이 더 많기 때문이다.
전자의 것들은 확장 완성형 혹은 통합형 한글 코드(Unified Hangul Code) 방법이고 후자는 조립형 방법이라고 불린다.
확장 완성형은 '가, 나, 다, ..., 각, 간, 갇, ... '이런식으로 완성된 하나의 글자로 인식하고,
조립형은 초성, 중성, 종성을 각각 하나의 바이트로 인식해서 합치는 방식이다.
이렇게 되면 확장 완성형은 그 가지수의 제한이 있을 수 밖에 없기 때문에(2,350자 밖에 안된다.) 조립형을 사용하게되는 것이다.
UTF-8
- 초성, 중성, 종성을 각각 1바이트로 인식해서 한글을 3바이트로 인식하지만 공백이나 영문은 1바이트로 인식한다.
- 한글 언어팩이 설치되어있지 않은 나라에서도 한글 표현이 가능하다.
- 역으로 다른 나라의 언어도 우리가 볼 수 있다.
- 많이 사용되는 웹서버인 Apache, llS, NginX 같은곳에서도 UTF-8을 지원한다.
- php, MySQl에서도 UTF-8을 기본 인코딩 방식으로 지원한다.
MS949, CP949, EUC-KR
- 한글은 2바이트로 인식한다.
- 한글을 사용하는곳에서만 볼 수 있다.
- 영어같은 1바이트 문자를 사용하는곳이 아닌 한글, 일본어, 중국어 같은 2바이트 문자를 사용하는곳에서 많이 사용된다.
한글 깨지는거 적다가 왜 여기까지 왔지...
'Eclipse' 카테고리의 다른 글
[Eclipse] 파일 검색과 문자열 검색(Ctrl + H) (0) | 2021.08.31 |
---|