본문 바로가기
프로그래밍/IT지식

[인코딩] 문자 인코딩이란?

by 준보틱스 2024. 6. 23.

문자 인코딩(Character Encoding)

사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것을 문자 인코딩이라고 한다.

컴퓨터는 모든 정보를 0과 1인 바이너리, 즉 숫자로 저장한다. 그러나 우리는 문서작업, 코딩, 메세지 등 컴퓨터에서 문자를 사용하여 입력하고 저장하며 처리하고 있다.

컴퓨터는 우리가 입력한 한글 등을 컴퓨터가 이해할 수 있는 신호로 변환하는 인코딩을 통해 저장하며 처리한다. 여기서 컴퓨터가 이해할 수 있는 신호는 바이너리 데이터를 의미한다.

역으로, 디코딩이란 0과 1로 구성된 바이너리 데이터를 다시 문자로 복구하는 것이다.

문자 셋(Character Set, 코드표)

바이너리 데이터로 변환하는 인코딩과 다시 문자로 변환하는 디코딩은 미리 정해진 규칙에 의해 수행된다. 이렇게 미리 정해진 규칙을 문자 셋이라고 하며, 초기 표준 문자열 셋은 ASCII, EBCDIC 등 이었다. 그러나 인터넷이 전세계적으로 보급되며 표현해야 할 문자가 증가하면서 문자 셋들을 표준화 할 필요성이 대두되었다. 이후 등장하게 된 것이 유니코드이다.

■ 문자 인코딩과 문자 셋

  • 문자 인코딩 : 문자를 컴퓨터가 이해할 수 있는 신호로 만드는 것
  • 문자 셋 : 인코딩과 디코딩을 위해 미리 정해진 규칙

문자 인코딩이란 컴퓨터가 이해할 수 있는 바이너리로 어떤 방법을 사용해도 상관없는 방법론이고 문자 셋이란 문자를 숫자로 매핑해주는 표이다.

■ ASCII(American Standard Code for Information Interchange)

아스키코드(미국 정보 교환 표준 부호)는 문자 그대로 미국에서 정의하고 있는 표준, 영문 알파벳을 사용하는 대표적인 문자 인코딩이다. 초창기 컴퓨터를 기계어만을 사용하여 개발하는 것에 어려움이 있어 문자를 코드화하기 위해 아스키코드가 탄생하게 되었고 대부분의 인코딩이 아스키에 기초하고 있다.

 확장아스키코드(Extended ASCII, ANSI 코드)

컴퓨터와 인터넷이 전세계적으로 보급되며 영어권이 아닌 나라에서도 문자열 셋을 사용해야 했다. 그래서 기존 아스키 코드의 7bit가 아닌 8bit로 문자를 표현하는데 사용하여 총 256개의 문자를 표현할 수 있게 되었다.

https://www.ascii-code.com/

 

ASCII table - Table of ASCII codes, characters and symbols

A complete list of all ASCII codes, characters, symbols and signs included in the 7-bit ASCII table and the extended ASCII table according to the Windows-1252 character set, which is a superset of ISO 8859-1 in terms of printable characters.

www.ascii-code.com

 멀티바이트 인코딩(Multibyte Encoding)

한국어, 중국어, 일본어는 문자의 수가 매우 많기 때문에 확장아스키코드 영역의 128개로도 부족했기 때문에 처음 멀티바이트 인코딩이 사용된 것은 CJK(Chinese, Japanese, Korean) 멀티바이트 인코딩이다. 따라서 1byte가 아닌 여러 byte를 통해 문자를 표현하는 것이 멀티바이트 인코딩이다. 많은 인코딩 방식을 사용하면서 서로 다른 인코딩 방식을 사용한 프로그램이나 문서 사이에서는 정상적으로 디코딩되지 않는 호환성 문제가 발생할 수 밖에 없었다는 것을 알 수 있다.

 유니코드(UNICODE)

유니코드는 전 세계의 모든 문자를 다루도록 설계된 표준 문자 전산 처리 방식이다. 세계 모든 언어와 기호에 코드값을 부여한 것이다. 즉, 유니코드는 전 세계의 모든 문자들을 컴퓨터에서 표현하고 다룰 수 있도록 설계된 산업 표준이다. 이 표준에는 ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자들을 다루기 위한 알고리즘 등을 포함하고 있다.

  • UTF-8

UTF-8은 가장 많이 사용되는 가변 길이 유니코드 인코딩이다. 글자마다 byte 길이를 다르게 해서 인코딩하는 방식이다. 코드 페이지는 65001로, UTF-8로 표현 가능한 길이는 최대 6바이트지만 다른 인코딩과의 호환을 위해 4바이트까지만 사용한다. 그래서 한 글자가 1~4바이트 중 하나로 인코딩될 수 있으며, 1바이트 영역은 아스키 코드와 하위 호환성을 가진다. 아스키 코드의 0~127까지는 UTF-8로 완전히 동일하게 기록된다.