Skip to content

문자 코드 #
Find similar titles

Structured data

Category
Computer science

모스(Morse) 부호부터 시작된 인코딩 #

문자 집합은 정보를 표현하기 위한 글자나 기호들의 집합을 정의한 것입니다. 이런 문자나 기호의 집합을 컴퓨터에서 저장하거나 통신에 사용할 목적으로 부호화 하는 것을 문자 인코딩(부호화)이라 하고 인코딩 된 문자 부호(Character code)를 다시 디코딩(복호화)하여 본래 문자나 기호로 표현할 수 있다.

문자와 숫자 -> 인코딩 -> 전송 -> 디코딩 -> 문자와 숫자

문자 인코딩의 대표적인 예로 전건을 길게, 또는 짧게 두드려서 라틴 알파벳을 나타내는 모스 부호가 있으며, 라틴 알파벳, 숫자, 특수 문자 등을 정수와 그에 대응되는 7비트 이진수로 표현하는 방법인 아스키(ASCII)가 있다.

아스키(ASCII, American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)는 영문 알파벳을 사용하는 대표적인 문자 인코딩이다. 아스키는 컴퓨터와 통신 장비를 비롯한 문자를 사용하는 많은 장치에서 사용되며, 대부분의 문자 인코딩이 아스키에 기초를 두고 있다. 키보드로 입력하고 화면에 출력할 수 있는 것을 0부터 9까지의 숫자와 대소문자 알파벳, 문장 부호와 공백 등의 몇가지 특수한 기호의 128자를 표시의 대상으로 했다. 128개의 코드를 비트로 표현하면 다음과 같이 표현할 수 있다.

0 000 0000

1 000 0001

...

127 111 1111

MarkDown

어디선가 README 파일이 대문자인 이유가 콘솔에서 ls -l를 실행 시켰을 때 ASCII 문자 코드 순으로 정렬되기 때문에 해당 디렉토리나 소프트웨어에 대한 정보를 기술한 파일인 README 파일이 맨 먼저 보여지게 하기 위해서라고 한다.

한글 인코딩 EUC-KR, CP-949 #

ASCII 방식은 컴퓨터가 로마자를 쓰지 않는 나라들에도 도입되면서부터 당장 문제가 드러났다. 한국어, 일본어, 혹은 중국어 등 로마자를 사용하지 않는 언어들은 알파벳을 조합하는 방식과는 많이 달랐기 때문에 128개의 코드로 표현하기 어려웠다.

EUC-KR은 KS X 1001과 KS X 1003 표준안의 인코딩 방식이며, CP-949(MS949, x-windows-949)는 확장 완성형의 인코딩 방식이다. 그러므로 EUC-KR은 2,350자의 한글, CP-949는 11,172자의 한글을 표현할 수 있다.

유니코드의 발명 #

유니코드는 전세계의 모든 문자를 동일하게 표현하기 위한 산업표준으로 유니코드협회(Unicode Consortium)가 제정하며, 유니코드에는 ISO-10646에 포함된 문자집합, 문자 부호화와 문자를 표시하기 위한 복호화 알고리즘이 포함되어 있다. ISO-10646은 문자 표시에 관한 국제 표준으로 초기 ISO-10646과 유니코드는 서로 다른 독자적인 표준이었으나. ISO-10646-1이 제정되면서, ISO실행위원회와 유니코드컨소시엄의 협의로 문자 표시 방법이 통합되어 현재의 국제 표준은 유니코드라고 할 수 있다. 유니코드란 것을 한 마디로 정의하면 모든 문자에 인덱스(index)를 부여한 것으로 http://www.unicode.org 에서 지금까지 보완된 유니코드 정보를 확인할 수 있다. (ISO-10646에는 KS X 1001(KSC5601), EUC-KR, ISO-2022-KR의 한글 문자 부호가 포함되어 있다.) 2014년 현재 유니코드 버전은 7.0까지 업그레이드 되었으며, 한글의 경우 Hangul Jamo 에 대한 인덱스 정의 스크립트를 보면 한글 자음, 모음 구성 인덱스를 확인할 수 있다.

ASCII는 표준이면서 동시에 인코딩 방식이지만 유니코드부터는 이것 역시 조금 달라졌다. 유니코드는 표준이지만 인코딩은 아니다. 유니코드는 UTF-8/16/32 중 하나로 인코딩을 할 수 있다. 이 점 때문에 많은 오해가 생기곤 한다.

웹 페이지의 경우 기본적으로 UTF-8 유니코드를 사용하기 때문에 한글 깨짐 현상이 발생할 때는 유니코드로 인코딩 방식을 변경하면 문제가 해결되곤 한다.

유니코드의 표현방법 #

유니코드 표현방법은 UTF(Unicode Transformation Format)와 UCS(Universal Character Set) 두 가지 종류가 있다. UCS 방식은 몇 바이트로 인덱스를 표현하는지를 나타내는 문자 인코딩 국제 표준이다. 기본이 되는 UCS 인코딩 폼으로 UCS-2와 UCS-4가 있는데 UCS-2 는 2byte로 인덱스를 표현하고, UCS-4는 4byte로 인덱스를 표현한다. UTF방식은 몇 bit 단위로 인덱스를 나타낼 것인가를 정의한 가변 길이 문자 인코딩 방식으로 UTF-8은 8bit씩 늘려가며 index를 나타내는 것으로, UTF-16은 16bit씩 늘려가며 인덱스를 나타내는 것을 의미한다. UTF-16과 USC-2는 같은 문자표를 가지고 있다고 보면된다. 유니코드를 구상했을 당시에는 2byte만 있으면 모든 문자를 표현할 수 있으리라 예상하고 BMP(Basic Multilingual Plane)라 불리는 논리적으로 구획을 나누어 문자목록을 표현하였다. 그러나 유니코드 4.0이 나오면서 마지막 인덱스 0x10FFFF 까지 모두 채워지면서 UTF-32가 나올 수 밖에 없는 상황이 되었다. UTF-16에서는 BMP에 나오는 문자는 2byte로 처리하고 BMP보다 더 높은 인덱스를 가지는 것들은 4byte로 변환해 처리해야 하지만 UTF-32에서는 기본적으로 4byte를 이용하기 때문에 인덱스 증가를 위한 처리가 불필요하다. UTF-8, UTF-16, UTF-32 는 모든 유니코드의 문자 인덱스를 나타내기 위한 방법이기 때문에 서로간의 변환은 어렵지 않게 할 수 있다. 유니코드의 글자처리 방식은 한글의 경우 초성, 중성, 종성에 대한 자음과 모음들을 조합해 하나의 문자를 만들수도 있으며, 하나의 인덱스가 완성된 문자하나를 표현하기도 한다.

Incoming Links #

Related Articles #

Suggested Pages #

0.0.1_20140628_0