Page 27 -
P. 27
운영체제는 상대적으로 개발 기간이 길어서 한두 해 정도 늦어지는 것이 괜찮을 수 있지만,
일반 응용소프트웨어는 주기가 짧기 때문에 이렇게 개발하는 것은 소프트웨어 회사나 사용자
모두에게 손해였다.
그래서 마이크로소프트를 비롯한 다국적 소프트웨어 기업들이 전 세계에서 사용하는 대부분
의 언어들을 통합하는 문자 변환표를 만드는 작업을 하게 되고, 이렇게 탄생한 것이 유니코드
(unicode)이다.
유니코드는 ASCII나 EUC-KR처럼 코드표가 바로 인코딩 방식이 되는 형태와는 달리 문자표
5
를 이진화시켜 저장하는 방법 즉, 인코딩 방법을 여러 가지 제공한다.
유니코드 인코딩 방법 중 한 가지인 UTF-16은 모든 문자를 2바이트로 이진화시키고, 컴퓨터
에서 정수를 메모리에 저장하는 방법에 따라 리틀/빅 엔디안(little/big endian) 형태 두 가지로 문자열
또 나뉜다. 예를 들어 ‘각’을 UTF-16으로 표현하면 16진수로 AC01이다. 리틀 엔디안에서는
‘각’을 01 AC 형태로, 빅 엔디안에서는 AC 01 형태로 저장한다.
UTF-16은 자바 프로그래밍 언어에서 사용한다. 윈도우는 내부적으로 UTF-16을 사용하지
만, 유니코드를 사용하지 않는 프로그램들과의 호환성을 고려해서 겉으로는 ANSI 인코딩을
사용하는 경우가 많다.
UTF-8은 유니코드 문자를 1~4바이트 길이의 이진화 코드로 변환한다. 7비트 ASCII 코드에
해당되는 영문 알파벳, 숫자, 특수 기호 등은 1바이트로 표현되고, 그 외의 문자들은 2~4바
이트로 표현된다. 한글은 주로 3바이트로 표현된다. 예를 들어 ‘각’을 UTF-8로 표현하면 16
진수로 EA B0 81이다.
최근 나온 리눅스나 맥 운영체제 등과 파이썬 3 이후 버전은 UTF-8을 사용한다.
운영체제와는 별개로 응용 프로그램들은 다른 문자 인코딩 방법을 사용하기도 한다.
한글 윈도우의 메모장 프로그램은 cp949를 기본으로 사용하고, 윈도우에서 실행되는 비주얼
스튜디오 코드(visual studio code) 같은 에디터는 utf-8을 기본 인코딩 방법으로 사용한다.
이미 언급한 것처럼 utf-8이나 cp949는 7비트 ASCII 코드와 호환성을 유지한다. 다시 말하면
영문, 숫자, 기본적인 특수 문자 등으로 작성한 텍스트는 인코딩 방법과 관계없이 동일하게
취급된다.
5장 문자열 │ 185