0과 1로 문자를 표현하는 방법
0과 1밖에 모르는 컴퓨터가 어떻게 문자를 표현하고 이해할 수 있을까?
문자 집합과 인코딩
- 문자 집합 (character set) : 컴퓨터가 이해할 수 있는 문자의 모음
- 인코딩 (encoding) : 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정
- 디코딩 (decoding) : 0과 1로 표현된 문자 코드로 문자를 변환하는 과정
아스키 코드
- 초창기 문자 집합 중 하나
- 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자
- 7비트로 하나의 문자 표현 (실제로는 8비트이지만 1비트는 오류 검출을 위해 사용되는 패리티 비트이다.)
https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C
아스키 코드
파일:attachment/1275273992_asciitable.gif 2열 이후의 코드들은 위키에서 사용할 수
namu.wiki
표를 보면 "A" 는 65로 인코딩, "a"는 97로 인코딩하는 것을 볼 수 있다.
아스키 코드는 간단한 인코딩만 가능하고, 한글을 포함한 다른 언어 문자, 다양한 특수 문자 표현이 불가능하다.
7비트로 하나의 문자를 표현하기 때문에 128개보다 많은 문자를 표현할 수 없다.
한글 인코딩 : 완성형 vs 조합형 인코딩
한글은 한글을 위한 인코딩이 필요하다. 알파벳을 이어 쓰면 단어가 되는 영어. 한글은 초성, 중성, 종성의 조합으로 이루어져있다. 그래서 2가지 인코딩 방식이 존재한다.
- 완성형 인코딩 방식
- 조합형 인코딩 방식
EUC-KR
- KS X 1001 KS X 1003 문자집합 기반의 한글 인코딩 방식
- 완성형 인코딩
- 글자 하나 하나에 2바이트 크기의 코드를 부여(2바이트 == 16비트 == 4자리 십육진수로 표현)
- 2300여개의 한글 표현 가능
- 여전히 모든 한글을 표현하기에는 부족한 수
- 쀏, 뙠, 휔 같은 한글은 표현 불가능 (실제로 EUC-KR로 인코딩되어 피해를 본 피해자 존재)
직접 인코딩 해보기
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
언어별로 인코딩을 국가마다 하게 되면 다국어를 지원하는 프로그램을 개발할 때엔 언어별 인코딩 방식을 모두 이해해야 한다.
그렇다면
"모든 언어, 특수문자까지 통일된 문자 집합을 사용하면 어떨까?"
"통일된 문자 집합 & 인코딩 방식이 있다면?"
유니코드 문자 집합과 UTF-8
유니코드
- 통일된 문자 집합
- 한글, 영어, 화살표와 같은 특수 문자, 심지어 이모티콘까지
- 현재 문자 표현에 있어 매우 중요한 위치
- 유니코드의 인코딩 방식 : UTF-8, UTF-16, UTF-32 ...
https://symbl.cc/en/unicode/blocks/
Unicode Blocks (◕‿◕) 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바이트 ~ 4바이트
- 인코딩 결과가 몇 바이트가 될지는 유니코드에 부여된 값에 따라 다름
"한" 과 "글" 글자를 2진수로 표현하면 다음과 같다.
- "한": D55C (== 1101 0101 0101 1100)
- "글" : AE00 (== 1010 1110 0000 0000)
이걸 UTF-8로 인코딩 해보자.
- "한": 11101101 10010101 10011100
- "글" : 11101010 10111000 10000000
직접 인코딩 해보기
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