본문 바로가기

Robotics/Software Tech.

유니코드(unicode)와 아스키코드(asciicode)

유니코드

국제표준으로 제정된 2바이트계의 만국 공통의 국제 문자부호 체계(UCS: Universal Code System)를 말한다. 애플컴퓨터·IBM·마이크로소프트 등이 컨소시엄으로 설립한 유니코드(Unicode)가 1990년에 첫 버전을 발표하였고, ISO/IEC JTC1에서 1995년 9월 국제표준으로 제정하였다. 공식 명칭은ISO/IEC 10646-1(Universal Multiple-Octet Coded Character Set)이다.

데이터의 교환을 원활하게 하기 위하여 문자 1개에 부여되는 값을 16비트로 통일하였다. 코드의 1문자당 영어는 7비트, 비영어는 8비트, 한글이나 일본어는 16비트의 값을 지니는데, 이를 모두 16비트로 통일한 것이다. ISO/IEC 10646-1의 문자판에는 전세계에서 사용하고 있는 26개 언어의 문자와 특수기호에 대해 일일이 코드값을 부여하고 있다. 최대로 수용할 수 있는 문자수는 6만 5,536자이다. 이 가운데 3만 8,885자는 주요 국가의 언어를 구현하는 용도로 이미 할당되어 있고 6400자는 사용자 정의 영역으로, 나머지는 2만여 자는 새로 추가될 언어 영역으로 각각 비워두고 있다. 코드 할당비율을 보면 한자가 39.89%로 가장 많고, 한글 17.04%, 아스키 및 기호문자 10.39% 등의 순이다.

여기에 포함된 한글 코드 체계는 옛 한글의 자모를 포함한 한글자모 240자(HANGUL JAMO, 11열)와 한국표준인 KSC 5601의 조합형 한글자모 94자(HANGUL COMPATIBILITY, 31열), 한글에서 구현할 수 있는 최대 글자수 1만 1,172자를 가나다순으로 배열해 놓은 완성형(HANGUL, AC열∼D7열) 등 3종으로 되어 있다. 또한 각국의 문자를 2바이트로 수용하기 위해 우리나라와 중국·일본·타이완의 한자를 통합하였다. 한자의 비중이 높은만큼 동양권에서는 서체의 통합과 입출력 방식에 대해 계속 논의를 해오고 있다.




아스키코드

1963년 미국표준협회(ASA)에 의해 결정되어 미국의 표준부호가 되었다. 미니컴퓨터개인용 컴퓨터(PC)와 같은 소형 컴퓨터를 중심으로 보급되어 현재 국제적으로 널리 사용되고 있다.

아스키는 128개의 가능한 문자조합을 제공하는 7비트(bit) 부호로, 처음 32개의 부호는 인쇄와 전송 제어용으로 사용된다. 보통 기억장치는 8비트(1바이트, 256조합)이고, 아스키는 단지 128개의 문자만 사용하기 때문에 나머지 비트는 패러티 비트나 특정문자로 사용된다.

일반적으로 컴퓨터는 데이터를 8개의 비트 단위로 묶어 한 번에 처리한다. 비트는 2진법의 0과 1 가운데 하나를 나타내는 단위이다. 즉, 1비트는 0이 될 수도 있고, 1이 될 수도 있다. 비트 8개를 모아 놓은 것을 바이트(byte)라고 부른다. 그러므로 1바이트로 표시할 수 있는 최대 문자의 수는 256조합이 된다.

따라서 컴퓨터에서는 8비트씩을 묶어 처리하는 것이 가장 효율적이다. 예컨대 7개 비트 이하로 묶을 경우에는 표현 가능한 수가 128이 된다. 그러나 이 숫자로는 세계 여러 나라에서 사용하는 모든 숫자·국가언어·기호 등을 충분히 표현할 수 없다. 반면에 9비트 이상일 경우에는 512가지나 되어 필요없는 영역이 많이 생기게 된다. 이 때문에 256가지의 영역마다 어떤 원칙에 의해 표현 가능한 모든 숫자·문자·특수문자를 하나씩 정해 놓은 것이 곧 아스키코드이다.



MFC에서 유니코드로 컴파일 하려면 컴파일 옵션을 어떻게 설정해줘야 할까..

먼저 자신의 VC++에서 유니코드 MFC 런타임 라이브러리가 있어야한다.
MFC43UD.LIB 같은 XXXU 파일들이 필요하다. 이는 VC++ 설치시
유니코드는 디폴트로 설치 안되기 떄문에 다시 설치 씨디를 넣은 후
설치 항목 설정에서 VC의 MFC 런타임 라이브러리로 가서 유니코드
라이브러리를 선택해야 한다.

그 후 유니코드 컴파일 할 자신의 VC  C++세팅에서
WIN32,_DEBUG,_WINDOWS,_AFXDLL,UNICODE

맨 뒤에 _UNICODE를 넣는다.

컴파일시
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16

라는 에러가 떨어지면 링크 탭에서
/entry:"wWinMainCRTStartup"

옵션을 추가해야 한다.


'Robotics > Software Tech.' 카테고리의 다른 글

지능로봇 시스템용 제어 및 화상처리 기법  (0) 2008.01.06
Flex 2.0 관련 글  (0) 2008.01.05
AJAX  (0) 2008.01.02
IOCP 사용하기  (0) 2008.01.01
[MFC]TRACE 파일 저장  (0) 2008.01.01