컴퓨터에서 사용하는 한글 문자 인코딩 방식에 대해서 알아보겠습니다.
컴퓨터가 처음 만들어 졌을 때 영어권에서 사용하는 언어를 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, CP949, UTF-8, UTF-16이 존재합니다.
UTF-8, UTF-16은 유니코드를 표현하는 방식입니다.
각 인코딩 방식이 사용하는 바이트가 다르기 때문에 저장 파일의 사이즈도 차이가 발생할 수 있습니다.
반응형
'개념' 카테고리의 다른 글
[개념] 머신러닝과 데이터마이닝 (0) | 2019.09.24 |
---|---|
[개념] 유니코드 인코딩 UTF와 BOM (0) | 2019.09.17 |
[개념] NoSQL (0) | 2019.08.08 |
[개념] 메모리 누수(Memory Leak) 현상 (0) | 2019.07.02 |
[개념] 오브젝트 스토리지(Object Storage) (0) | 2019.05.08 |