본문 바로가기
개념

[개념] 한글 문자 인코딩

by hs_seo 2019. 9. 17.

컴퓨터에서 사용하는 한글 문자 인코딩 방식에 대해서 알아보겠습니다.

 

컴퓨터가 처음 만들어 졌을 때 영어권에서 사용하는 언어를 1byte로 모두 표현할 수 있었습니다. 하지만 컴퓨터가 여러 나라에 보급되면서 각 나라의 문자를 모두 표현할 수 있는 방식을 찾아야 했습니다. 이를 위해서 국제 표준으로 유니코드를 정의하게 되었습니다. 유니코드를 인코딩하는 방식으로 utf-8과 utf-16이 있습니다.

 

유니코드와 별개로 윈도우에서 한글을 표현하는 방식이 EUC-KR과 이를 확장한 CP949 방식입니다.

 

한글 표현 방식


  • EUC-KR
    • 유닉스 계열에서 사용하는 완성형 한글 코드 조합
  • CP949
    • EUC-KR을 확장하여 윈도우에서 사용하는 확장 완성형 한글 코드 조합
    • EUC-KR과 호환 가능
  • 유니코드
    • 전세계의 모든 문자를 동일하게 표현하기 위해서 유니코드협회를 제정하여 산업 표준을 제정
    • UTF-8
      • 8bit 기반
      • 영문/숫자/기호는 1byte
      • 한글과 한자는 3byte로 표현
    • UTF-16
      • 16bit 기반

 

컴퓨터상의 표현


컴퓨터 상에서 각 문자가 어떻게 표현되는지 알아보겠습니다. 윈도우의 메모장을 이용하여 '가나다'를 저장 합니다. 리눅스의 file -i명령을 이용하여 파일 형식을 확인한 것과 각 파일의 헥사코드를 확인하면 다음과 같습니다.

 

       
파일명 인코딩 형식 헥사코드 
ANSI.txt ANSI ANSI.txt: text/plain; charset=iso-8859-1 00000000: b0a1 b3aa b4d9
Unicode.txt 유니코드 Unicode.txt: text/plain; charset=utf-16le 00000000: fffe 00ac 98b0 e4b2
utf-8.txt utf-8 utf-8.txt: text/plain; charset=utf-8 00000000: efbb bfea b080 eb82 98eb 8ba4

 

같은 '가나다'를 저장한 파일도 인코딩 형식에 따라 파일 사이즈와 charset이 다르게 표현되는 것을 알 수 있습니다.

$ ll
total 12
-rw-r--r-- 1 bpsec users  6 Sep 17 01:08 ANSI.txt
-rw-r--r-- 1 bpsec users  8 Sep 17 01:08 Unicode.txt
-rw-r--r-- 1 bpsec users 12 Sep 17 01:08 utf-8.txt

$ file -i ANSI.txt 
ANSI.txt: text/plain; charset=iso-8859-1
$ file -i Unicode.txt 
Unicode.txt: text/plain; charset=utf-16le
$ file -i utf-8.txt 
utf-8.txt: text/plain; charset=utf-8

 

EUC-KR 코드표


EUC-KR의 가는 boa1이고, 00000000: b0a1 b3aa b4d9 의 첫번째 문자와 일치하는 것을 알 수 있습니다.

 

EUC-KR 코드표

종합


한글 문자열을 인코딩 하는 방식에 EUC-KR, CP949, UTF-8, UTF-16이 존재합니다.

UTF-8, UTF-16은 유니코드를 표현하는 방식입니다.

각 인코딩 방식이 사용하는 바이트가 다르기 때문에 저장 파일의 사이즈도 차이가 발생할 수 있습니다.

반응형