[개념] 한글 문자 인코딩

2019. 9. 17. 14:12·개념

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

 

컴퓨터가 처음 만들어 졌을 때 영어권에서 사용하는 언어를 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은 유니코드를 표현하는 방식입니다.

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

반응형
저작자표시 비영리 동일조건 (새창열림)

'개념' 카테고리의 다른 글

[개념] 머신러닝과 데이터마이닝  (0) 2019.09.24
[개념] 유니코드 인코딩 UTF와 BOM  (0) 2019.09.17
[개념] NoSQL  (0) 2019.08.08
[개념] 메모리 누수(Memory Leak) 현상  (0) 2019.07.02
[개념] 오브젝트 스토리지(Object Storage)  (1) 2019.05.08
'개념' 카테고리의 다른 글
  • [개념] 머신러닝과 데이터마이닝
  • [개념] 유니코드 인코딩 UTF와 BOM
  • [개념] NoSQL
  • [개념] 메모리 누수(Memory Leak) 현상
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    emr
    하이브
    bash
    Python
    yarn
    java
    build
    Linux
    S3
    정올
    ubuntu
    하둡
    오류
    알고리즘
    백준
    Tez
    oozie
    파이썬
    airflow
    mysql
    Hadoop
    HDFS
    AWS
    hbase
    k8s
    error
    다이나믹
    SPARK
    HIVE
    nodejs
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[개념] 한글 문자 인코딩
상단으로

티스토리툴바