본문 바로가기
[ComputerScience]

[ CS ] 한글 인코딩 정리(EUC-KR , UTF-8)

by Inkim 2019. 8. 19.

※ 한글 인코딩

(특징)

⑴ 2가지 방식 존재

   ① EUC-KR

   ② UTF-8

 

(배경)

- Window 의 경우, CP949 방식 사용

→ MS에서 EUC-KR 방식에서 확장 후, CP949 또는 MS949 로 통칭.

→ 현재, Window는 유니코드 기본 베이스

 

※ 아스키코드(ASCII : American Standard Code for Information)

(개념)

1960년대 ANSI에서 표준화한 7비트 부호 체계

→ 프로그램, 기기간 통신 및 데이터 저장을 위해 문자/기호가 컴퓨터 언어인 0,1 변환 필요성 대두

 

(특징)

① 아스키코드표 : 128개 문자 테이블

② 128개 숫자(키)에 특정 문자값 할당

③ 0x00 ~ 0x7F : 총 127개 문자(대소문자 , 숫자, 제어문자, 특수문자)

 

※ 유니코드(UniCode)

(개념)

숫자와 문자에 해당하는 키:값이 1:1로 매핑된 형태의 코드

U+ 접두어로 표기

(ex)

아스키코드 0x41 = 'A' = U+0041 유니코드

 

(특징)

① 영어,숫자,기본기호 외 특정 국가에서 사용되는 문자 처리 필요성 대두

→ 1바이트 정의 아스키코드 확장 요구

③ 아스키코드로 표현되지 않는 문자 표현울 위해 전세계의 모든 문자에 특정 숫자(키)와 맵핑

→2의 20승 + 2의 16승 만큼의 공간을 사용하므로 유니코드에 거의 모든 문자 수용

→ 한자(10만여자) 제외 + 한글의 경우, 조합형을 위한 자모 및 완성형 모두 수용

→ 분할된 테이블 사용

 

① 타국에서 한글 확장팩이 설치되지 않더라도 한글 표현 가능

→ 글로벌 서비스 제공 또는 다양한 언어로 작성되는 환경에 적합

② 리눅스 계열의 서버의 경우, 유니코드 지원 또는 유니코드로 인코딩 설정 가능

→ 일반적으로 서버 인코딩은 UTF-8 이용

 

 

cf. 한글 조합 2가지 방식

① 조합형

- 자음과 모음을 초성,중성,종성 구분하여 문자 작성 방식

- 1글자당 각각 1바이트씩 총 3바이트 문자 인식

 

② 완성형

- 문자를 하나의 완성된 글자 그 자체로 인식

- 완성형 문자표를 토대로 문자 인식

- 문자표에 없는 문자(ex. '괡' 의 경우 □로 표기)

- 유니코드보다 확장성 저하. 

 

☞ 윈도우의 인코딩 방식은 CP949 완성형. 조합형으로 쓸 수 있는 거의 모든 한글 포함한 한글 테이블.

☞ '한글 작성' 측면이 아닌 웹서비스 제공 측면에서 문제 발생.

bc.  웹서버/서버 운영체제/ DB/PHP의 경우, UTF-8/EUC-KR 인코딩 방식이 상호 동일해야 문자 정상적 표현 가능.

 

※ UTF-8

(개념)

가변길이 문자 인코딩 방식

 

(특징)

① 조합형 방식의 문자집합(Character Set) + 유니코드를 사용하는 인코딩 방식

② ASCII 표현 가능

③ 한글(3바이트) + 공백, 영문(1바이트)

④ 유니코드 1개 문자 표기를 위해, 1바이트~4바이트 사용.

 (ex) U+0000 ~ U+007F 범위 아스키문자 : UTF-8 방식 1바이트 표기

→ 4바이트 표현 문자는 다국어 평면(BMP) 바깥의 유니코드 문자. 거의 사용x

⑤ 사용 환경 : PHP / MYSQL/Apache / Nginx 등

⑥ 유니코드표 : U+로 시작하는 문자 테이블

 

cf. UTF-8 / UTF-16 / UTF-32 비교

- 유니코드의 숫자 키 표현방식의 차이 

- 같은 유니코드표로 다르게 표현하는 방식.

 

① UTF-8 : 가변바이트 활용

→ 1바이트만으로 활용 가능한 'A' 의 경우 : 0x41

② UTF-16 : 2바이트(16비트) 활용

→ 2바이트 모두 활용 'A' 의 경우 : 리틀엔디안/빅엔디안 방식에 따른 표기 차이

→ LE(Little-Endian) 방식(FF FE) : 0x4100

→ BE(Big- Endian) 방식 (FE FF) : 0x0041

③ UTF-32 : 4바이트 활용

→ 4바이트 모두 활용 'A' 의 경우 : 리틀엔디안/빅엔디안 방식에 따른 표기 차이

→ LE(Little-Endian) 방식: 0x4100 0000 

→ BE(Big- Endian) 방식 : 0x0000 0041

 

 

(결론)

다수의 웹 서비스 환경의 수요로 많은 소스 코드들은 UTF-8로 작성되고 있다.

 

※ EUC-KR

(개념)

-완성형 문자 인코딩 방식

-한글의 경우, 2바이트로 표기

 

(특징)

① EUC-KR의 경우 웹, EUC-KR확장버전인 CP949의 경우 윈도우에서 많이 사용

→ 2바이트권 문자에서 주로 사용

②한글의 경우, 2바이트로 사용하는 문자 집합(Character Set)

③ EUC-KR을 사용하는 국가(한글 사용국)에서만 문자가 제대로 보임

→ 한글, 영어만 사용하는 페이지에서 적합

→CP949 또한 2바이트 방식.

④ 영어 같은 1바이트 단일 문자가 아닌, 한글/일어/중국어처럼 1글자당 2바이트가 들어가는 더블바이트 문자권에서 많이 사용  → 해당 문자는 인코딩 변환에서 자유롭지 못함.

⑤ EUC-KR/CP949 코드표 : 2바이트 문자 표기

 

★결론

- 웹에서는 EUC-KR 끼리 UTF-8끼리만 인코딩 변환 가능.

- 웹에서 기본 UTF-8을 사용하므로 한글 사이트 제작 시, 인코딩을 EUC-KR로 설정해야함.

① 소스 자체에서 인코딩 변환 함수를 사용하여 완성형(EUC-KR)로 코딩

② 서버 자체에서 다양한 인코딩 방식 지원 필요

 

★ 확인 필수 항목

① 서버 OS 인코딩 

② 웹서버 인코딩

③ PHP 인코딩

④ 웹소스 인코딩

⑤ 데이터베이스 서버 인코딩

 

 

 

 

 

 

참고링크

https://studyforus.tistory.com/167

 

한글 인코딩 종류 및 문제점 파악하기 (UTF-8 vs. EUC-KR)

인코딩 방식 이해하기 한글 인코딩 종류 윈도우를 기본 운영체제로 사용하였을 때는 전혀 느끼지 못했던 인코딩 방식이 웹서버를 운영하면서 인코딩 표준을 따라가다 보니 여러 문제점이 생겼습니다. 한글 인코딩..

studyforus.tistory.com

https://norux.me/31

불러오는 중입니다...

 

'[ComputerScience]' 카테고리의 다른 글

[CS Interview :: OS ] 프로세스와 스레드(Process vs Thread)  (0) 2020.10.08
[CS : Interview ]  (0) 2020.10.07