Machineboy空

컴퓨터가 이해하는 데이터② - 문자 표기 (아스키 코드,EUC-KR에서 utf-8 인코딩까지) 본문

Computer/CS

컴퓨터가 이해하는 데이터② - 문자 표기 (아스키 코드,EUC-KR에서 utf-8 인코딩까지)

안녕도라 2024. 1. 2. 15:40
  • 문자 집합(character set) : 컴퓨터가 이해할 수 있는 문자의 모음

  • 인코딩과 디코딩 (꼭  문자에 국한해서만 사용되는 것은 아님 )
    • 인코딩(encoding) : 코드화 ( 문자 >> 0,1로 이루어진 문자 코드 )
    • 디코딩(decoding) : 코드 해석 ( 문자 << 0,1로 이루어진 문자 코드 )

 

1) 아스키 코드

초창기 문자 집합 중 하나로,

알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자(enter, backspace 등)를 표현 가능

 

7비트로 하나의 문자를 표현한다.

실제로는 8비트를 사용하지만, 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(parity bit)

 

즉 아스키 코드로 표현할 수 있는 총 문자의 개수는 2 7^ , 128개

 

코드  포인트(code point): 문자 하나에 부여된  값 

ex) A의 코드 포인트는 65

 

장점 간단한 인코딩
단점 한글을 포함한 다른 언어 문자,  특수 문자 표현 불가

- 7비트로 하나의 문자를 표현하기에 128개 보다 많은 문자를 표현할 수 없다.
- 8비트 확장 아스키(extended ASCII)가 등장했지만 여전히 부족하다.

 

2) 언어별 인코딩 방식의 등장! (EUC-KR)

언어의 특성에 맞는 인코딩 방식의 필요성 대두

영어 한글
알파벳을 이어 쓰면 단어가 되는 영어 초성+중성+종성

 

완성형 인코딩
완성된 한 글자에 고유한 코드 부여
EUC-KR KS X 1001 KS X 1003 문자 집합 기반의 한글 인코딩
글자 하나하나에 2byte 크기의 코드 부여

(2byte == 16bit == 4자리 16진수)
장점 2300여개의 한글 표현 가능
단점 여전히 모든 한글을 표현하기에는 부족
(뷃, 뙠, 휔 같은 한글 표현 불가)

실제로 EUC-KR로 인코딩되지 않는 문자의 이름을 가진 분이 핸드폰 명의, 은행 등 여러가지 문제를 겪고 있음을 호소하는 청원이 올라오기도 함

언어별  인코딩을 국가마다 하게 되면 다국어를 지원하는 프로그램을 개발할 시 언어별 인코딩을 모두 이해해야 하는 단점

https://dencode.com/

 

DenCode | Encoding & Decoding Online Tools

Encoding and Decoding site. e.g. HTML Escape / URL Encoding / Base64 / MD5 / SHA-1 / CRC32 / and many other String, Number, DateTime, Color, Hash formats!

dencode.com

 

 

 

3) 통일된 문자 집합 & 인코딩 방식의 등장! (UTF-8)

 

모든 언어, 특수 문자까지 통일된 문자 집합의 필요성

  • 유니코드: 통일된 문자  집합
    • unicode에 16진수의 코드포인트(부여된 값)가 부여되어 있다
    • 한글, 영어, 특수 문자(화살표 등), 이모티콘까지 지원
    • 현대 문자 표현에 있어 매우 중요한 위치
  • 유니코드의 인코딩 방식: unicode의  코드포인트(부여된 값)을 컴퓨터가 이해하는 0,1로 인코딩하는 방식 또한 다양하다.
    • utf-8, utf-16, utf-32

https://symbl.cc/en/unicode/table/

 

Unicode Character Table - Full List of Unicode Symbols (◕‿◕) SYMBL

Unicode web service for character search. Find, copy and paste your favorite characters: 😎 Emoji, ❤ Hearts, 💲 Currencies, → Arrows, ★ Stars and many others 🚩

symbl.cc

일본어 예시

 

utf-8 인코딩
*UTF(Unicode Transformation Format) = 유니코드 인코딩 방법
유니코드의 인코딩 방식 중 가장 대중적인 방식
가변 길이 인코딩
: 유니코드에  부여된 값(코드포인트)에 따라 인코딩 결과가 1~4byte

https://onlinetools.com/utf8/convert-utf8-to-binary

 

Convert UTF8 to Binary Bits

World's simplest online utility that converts UTF8 to binary. Free, quick, and powerful. Import UTF8 – get binary bits.

onlinetools.com

 

글자가 깨진다면 이제, 글자의 인코딩 방식이 잘못된 것은 아닌지 의심할 수 있을 것