문자셋(Character Sets)의 종류와 특성
가장 대표적인 문자셋에 해당하는
아스키코드(ASCII CODE)와 유니코드(UNICODE)에 대해서 간단히 언급하고자 한다.
이미 알고 있듯이 아스키코드는 미국에서 정의하고 있는 표준이다.
알파벳의 개수는 26개이다.
여기다가 몇몇 확장 문자(그림문자를 비롯하여 흔히 사용되는 수학 기호나 악센트 기호들)를 포함해도 총 256개 넘지 않는다.
그래서 1바이트를 가지고도 충분히 표현할 수 있다.
다시 말해서 아스키코드는 1바이트로 표현이 된다.
문제는 영어가 아닌 다른 국가에서 사용하는 문자들을 표현하는 일이다.
우리나라를 예로 들어 보자.
컴퓨터에 한글을 인식시키기 위해서는 글자 하나하나마다 값(숫자)을 지정해줘야만 한다.
아스키코드처럼 말이다.
그렇다고 해서 미국에서 영어를 표현하기 위해
정의해 놓은 아스키코드값을 한글을 표현하는 데에 사용할 수도 없는 일이다.
대한민국 컴퓨터도 영어를 표현해야 하기 때문이다.
그래서 등장한 것이 유니코드이다.
유니코드는 문자를 표현하는 데 있어서 균일하게 2바이트를 사용한다.
2바이트면 나타낼 수 있는 문자 종류가 65536개에 이른다.
이 정도면, 영어와 한글은 문론이거니와 전세계의 모든 문자와 다양한 종류의 기호를 표현할 수가 있다.
문자셋은 그 종류에 따라서 다음과 같이 크게 세 가지 형태로 나뉘어진다.
SBCS (Single Byte Character Set)
처음 시작하는 Single Byte라는 이름이 의미하듯이 문자를 표현하는 데 있어서 1바이트만을 사용하는 방식이다.
우리에게 가장 익숙한 아스키코드가 대표적인 SBCS에 해당한다.
따라서 필자는 앞으로 내용의 흐름에 따라서 'SBCS 기반의 문자열' 이라는 표현과
'아스키코드 기반의 문자열'이라는 표현을 혼용해서 사용하겠다.
MBCS (Muti Byte Character Set)
처음 시작하는 Multi Byte라는 이름이 의미하듯이 문자를 표현하는 데 있어서 동일한 바이트 수를 적용하는 것이 아니라,
다양한 바이트 수를 사용해서 문자를 표현하는 방식이다.
어떤 문자는 1바이트로 표현하고 어떤 문자는 2바이트로 표현된다.
Multi-byte라는 의미를 다르게 해석해서 "아하! 유니코드가 MBCS에 해당되겠구나"라고 결론 내리기 쉽다.
그러나 주의지하.
유니코드 MBCS에 속하지 않는다.
왜냐하면 MBCS는 SBCS를 포함하기 때문이다.
그래서 대부분의 문자들은 2바이트로 처리하되, 경우에 따라서는 1바이트로 처리한다.
아스키코드에서 정의하고 있는 문자를 표현할 때에는 1바이트로 처리하고,
아스키코드에서 정의하지 않는 다른 무자를 표현할 때에만 2바이트로 처리하는 방식이다.
따라서 MBCS에서 영어는 1바이트로, 한글은 2바이트로 처리된다.
여러분은 MBCS에 대한 설명을 들으면서 다은과 같은 느낌을 받을 것이다.
"와우 상당히 효율적으로 문자를 표현하네"
모든 문자를 2바이트를 처리하는 유니코드와 비교하면 상당히 효율적으로 문자를 표현한다는 느낌을 받을 수 있다.
그러나 그만큼 프로그램을 구현하는 데 있어서 세심한 주의를 기울여야 한다.
WBCS (Wide Byte Character Set)
유니코드 WBCS 방식에 해당한다. WBCS는 모든 문자를 2바이티로 처리하는 문자셋이다.
따라서 필자는 내용 흐름에 적절히
"WBCS 기반 문자열" 이라는 표현과 "유니코드 기반 문자열"이라는 표현을 혼용해서 사용하고자 한다.