Character set, Character encoding, Code page, Unicode

1.     CharSet = Character Set

l  영문 표현 그대로 문자 집합이라는 의미입니다.

l  , 컴퓨터에서 문자를 표현하기 위해 각 문자를 정수 값에 대응시켜 놓은 체계를 말합니다. 숫자 코드가 컴퓨터 상에서 어떻게 표현되는 가는 정해지지 않은 상태라고 보면 됩니다.

l  예를 들어 한글 문자 집합에는 ’, ‘’, ‘’... 와 같은 문자들이 포함되어 있습니다. 이를 컴퓨터가 인식하기 위해서는 어떤 데이터이든 숫자로 표현해야 하기 때문에 '' 라는 문자는 0xac00라는 숫자값으로 매핑시켜 사용하도록 정의한 것을 charset이라고 하는 것입니다.

l  이러한 CharSet에는 언어 종류만큼 여러 개가 있을 수 있고, CharSet에 따라 표현하고자 하는 문자의 값과 대응되는 숫자의 값이 달라지게 됩니다. 따라서 문자를 주고 받을 때 서로간에 CharSet을 일치시켜야 할 필요가 있습니다. 그렇지 않으면 원래 의도된 내용이 아니 깨진 문자들을 보게 될 것이기 때문입니다.

l  웹 페이지 작성 시 content-type의 일부로 CharSet을 명시하는 것은 웹 브라우저에게 사용하는 CharSet을 알려주어 오해가 없도록 하기 위해서 입니다.

 

2.     Encoding

l  CharSet이 문자에 대해 정수값을 지정한 것이라면, encoding은 문자를 표현하는 정수값을 어떤 bit 배열로 표현할 것인지를 의미합니다. , encodingCharSet에서 더 나아가 컴퓨터 상에서 어떻게 표현되는 가까지 정해진 상태의 문자의 집합입니다. 예를 들어 같은 그림이라도 압축 방법에 따라 gif, png, bmp 등등의 파일 형식이 있듯이 CharSet과 encoding의 차이를 이해할 수 있습니다. 완성형 한글인 KSC-5601 CharSet은 UNIX에서는 EUC-KR이란 encoding으로 표현되고 윈도우즈에서는 cp949란 encoding으로 표현됩니다.

l  CharSet이 같다면 그 CharSet을 지원하는 어떤 encoding을 사용하든지 각 문자에 대응하는 논리적인 정수값은 동일하다고 할 수 있습니다. 그러나 실제로 기록되는 bit 배열은 encoding에 따라 달라질 수 있습니다. 이 경우, 제대로 데이터를 주고 받으려면 CharSet뿐만 아니라 encoding도 맞춰야 합니다.

 

3.     EUC & CodePage

l  EUC는 Extended Unix Code의 약자입니다. Unix 시스템이 전세계로 퍼져 나가면서 각국의 언어를 어떻게 표기할까를 고민하다가 각 나라별로 표준 CharSet을 개발하였는데, 이렇게 만들어진 것이 EUC입니다. 한국어는 EUC-KR(ksc5601+US-ASCII), 일본어는 EUC-JP으로 정의되어 있습니다.

l  CodePage는 Microsoft의 Windows 시스템에서 각 나라의 문자를 표기하기 위해 만든 CharSet입니다. 한국어는 949번을 할당 받아 cp949 혹은 codepage949로 소개되었습니다.

 

4.     Unicode

l  모든 글자 표현 체계를 하나로 통합하겠다는 취지로 만들어진 CharSet 입니다.

l  Unicode 자체는 어떤 특정한 바이트 형태를 지정하지는 않습니다. 그렇기 때문에 encoding이 필요하게 됩니다. Unicode != UTF-8 이며 Unicode encoding 중의 하나가 UTF-8은 될 수 있습니다.

l  UTF-8 ASCII로 표현 가능한 영문자는 1바이트로 표현을 하고 다른 문자들은 2~3바이트로 표현을 합니다. UTF-16 4바이트까지 사용합니다.

l  Windows 9x (Windows 95, 98, me) 계열은 Windows API를 표준적으로 ANSI 버전을 지원합니다. , UNICODE Windows API에서 직접 지원하지 않고 MBCS만을 직접 지원합니다. 이때, ANSI MBCS라고 생각해도 무관합니다.

l  ‘Windows NT (Windows NT, 2000, XP)계열은 Windows API ANSI 버전과 UNICODE 버전을 모두 지원합니다. ANSI API를 쓰는 경우에는 OS API를 다시 UNICODE 버전으로 변환해야 하므로 UNICODE 버전으로 만들어진 프로그램은 windows NT계열에서 약간의 속도 향상을 가져올 수 있다고 하겠습니다.

 

5.     UNIX에서의 Encoding

l  HTML : ISO-8859-1 ISO-10646

l  XML : UTF-8

l  웹 브라우저: 내부적으로 모두 유니코드로 처리를 함

l  HTTP/1.0 : ISO-8859-1

l  HTTP (URL,URI) : US-ASCII, %hexadecimal_code, JavaScript escape() 함수 사용

l  Java : 유니코드 2.0

l  직렬화된 Java Class : UTF-8

l  J2EE : ISO-8859-1

l  Oracle : UTF-8 (AL32UTF8), 한국에서는 KSC5601 (KO16KSC5601)



출처 : http://blogs.technet.com/hjjeon/archive/2009/03/13/character-set-character-encoding-code-page-unicode.aspx