문자열 인코딩

옥영진·2020년 7월 2일
0

1. 문자열 인코딩이란

문자열 인코딩이란 컴퓨터가 인간의 언어를 처리할 수 있도록 일정한 규칙에 따라 2진수로 변환하는 방법이다.

그 규칙들에는 아스키 코드, EUC-KR, UTF-8, UTF-16 등이 있다. 규칙들이 여러 개 존재하기 때문에 이들 중 어느 것을 적용하느냐에 따라 글자가 올바르게 보일 수도 있고, 글자가 깨져 보일 수도 있다.
여러 규칙들이 존재하는 이유는 처음 컴퓨터가 등장했을 때 영어와 일부 특수문자만 지원했기 때문에 각 나라에서 사용하는 언어를 지원하도록 독자적인 규칙들을 만들었기 때문이다. 모든 언어를 같은 규칙으로 표현할 수 있는 유니코드 방식이 등장했지만 이 방식에서도 UTF-8, UTF-16, UTF-32 중 같은 규칙을 선택해야 서로 다른 시스템이 호환된다.

2. 아스키 코드(ASCII)

아스키 코드(American Standard Code for Information Interchange)는 처음으로 표준을 정립한 문자열 인코딩 방식으로, 사용할 수 있는 문자의 종류로는 영어 대문자와 소문자, 아라비아 숫자, 공백 및 특수 문자들이 있다. 아스키 코드로 문자를 표현할 때는 0부터 127까지, 총 128개의 숫자(1바이트)를 사용한다.

컴퓨터는 2진수 데이터를 한 가지 형태로만 인식할 수 있기 때문에 숫자와 문자를 동시에 인식할 수 없다. 이러한 문제를 해결하기 위해 숫자를 나타내는 문자를 만들었다. 숫자 0부터 9를 숫자의 의미를 무시하고 문자 그대로 사용한다는 의미이다. 아스키 코드는 영어를 제외한 다른 언어를 표현할 수 없다. 그래서 각 나라에서 컴퓨터를 사용하기 시작했을 때 아스키 코드 대신 독자적인 인코딩 규칙을 만들었고, 한국에서 만든 것이 바로 EUC-KR이다.

3. EUC-KR(CP949)

EUC-KR은 한국 산업 표준으로 지정된 한국어 문자 집합으로 문자 하나를 표현하기 위해 2바이트를 사용한다. 단, 아스키 코드 문자를 표현할 때는 1바이트를 사용하기 때문에 서로 호환된다.

EUC-KR은 모든 글자가 완성된 형태로만 존재하는 '완성형' 코드이다. 따라서 표현할 수 없는 한글이 일부 존재한다.

💡 CP949는 EUC-KR을 확장한 문자 집합으로 더 많은 문자를 표현할 수 있다.

4. 유니코드(UTF-8, UTF-16, UTF-32)

유니코드는 국제 표준화 기구에서 동일한 규칙으로 모든 언어를 표현할 수 있도록 만든 인코딩 방식이다. 유니코드 문자 집합을 표현하는 문자열 인코딩은 UTF-8, UTF-16, UTF32 총 세 가지가 있다.

4-1. UTF-8

UTF-8은 8비트(1바이트)로 인코딩한다는 의미이다. 따라서 아스키 코드와 호환되며, 표현하려는 문자에 따라 최대 6바이트까지 사용한다.

4-2. UTF-16

UTF-16은 16비트(2바이트)로 인코딩한다는 의미이다. UTF-16은 2바이트 또는 4바이트만 사용하기 때문에 아스키 코드와 호환되지 않는다. 유니코드에는 문자의 종류에 따라 기본 다국어 평면(BMP), 보충 다국어 평면(SMP), 상형 문자 보충 평면(SIP), 특수 목적 보충 평면(SSP) 등 평면 4개가 있고, 표현하려는 문자가 어느 평면에 속하는지에 따라 사용하는 바이트 수가 결정된다.

4-3. UTF-32

UTF-32는 4바이트를 고정적으로 사용하며 반드시 사용해야 할 경우가 아니라면 보통 사용하지 않는 인코딩 방식이다.

profile
안녕하세요 함께 공부합시다

0개의 댓글