21
제3장 디지털 정보 구현 | 1 제3장 디지털 정보 구현 정보는 전산 자료의 형태로 소통되며 , 그 형식은 문자 , 그림 , 음성 , 영상 등 다양하다 . 인간사회에서 언어가 다르면 의사소통할 수 없듯이, 전산 정보의 소통에도 문자 , 그림 , 음성 , 동영상의 형식이 통일되어 있지 않으면 정보를 공유할 수 없다 . 이에 따라 컴퓨터가 등장한 이래로 , 컴퓨 터에서 사용되는 부호의 표준화 작업이 지속적으로 이루어져 왔으며 , 미국의 정보교환용 표준코드 (ASCII American Standard Code for Information Interchange)나 우리나라의 정보교환용 표준코드 (KS), 더 나 아가 전 세계 문자를 표현하려는 유니코드 (Unicode) 가 바로 그 결과라고 할 수 있다 . 컴퓨터에 문자를 표상하는 문제는 영문자와 한글 혹은 한자만의 문제 는 아니다 . 세계에는 수많은 문자가 있으며 , 정보 공유의 관점에서 세계 의 문자를 통합하여 코드를 부여하고자 하는 움직임이 생겼다 . 그 결과 로 나온 것이 유니코드 혹은 ISO 10646 코드라는 것이다 . 이것은 원래 2바이트로 전 세계 언어를 구분한 후 , 2 바이트로 그 언어의 문자를 표상 하고자 제안된 것이지만 , 한 문자를 4개의 바이트로 표시하는 비효용성 때문에 그대로 시행되지는 않고 2개의 바이트 내에 세계에서 가장 널리

제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 1

제3장 디지털 정보 구현

정보는 전산 자료의 형태로 소통되며, 그 형식은 문자, 그림, 음성, 동영상 등 다양하다. 인간사회에서 언어가 다르면 의사소통할 수 없듯이,

전산 정보의 소통에도 문자, 그림, 음성, 동영상의 형식이 통일되어 있지 않으면 정보를 공유할 수 없다. 이에 따라 컴퓨터가 등장한 이래로, 컴퓨터에서 사용되는 부호의 표준화 작업이 지속적으로 이루어져 왔으며,

미국의 정보교환용 표준코드(ASCII American Standard Code for

Information Interchange)나 우리나라의 정보교환용 표준코드(KS), 더 나아가 전 세계 문자를 표현하려는 유니코드(Unicode)가 바로 그 결과라고 할 수 있다.

컴퓨터에 문자를 표상하는 문제는 영문자와 한글 혹은 한자만의 문제는 아니다. 세계에는 수많은 문자가 있으며, 정보 공유의 관점에서 세계의 문자를 통합하여 코드를 부여하고자 하는 움직임이 생겼다. 그 결과로 나온 것이 유니코드 혹은 ISO 10646 코드라는 것이다. 이것은 원래 2바이트로 전 세계 언어를 구분한 후, 2바이트로 그 언어의 문자를 표상하고자 제안된 것이지만, 한 문자를 4개의 바이트로 표시하는 비효용성 때문에 그대로 시행되지는 않고 2개의 바이트 내에 세계에서 가장 널리

Page 2: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

2 | 프랑스어와 컴퓨터

사용되는 여러 언어의 문자를 모두 표상하는 기본 다국어 문자판(BMP

Basic Multilingual Plane)을 현실적인 대안으로 제시하였다.

이 코드를 잘 활용하면, 2개의 바이트만으로도 65,536개의 문자를 표상할 수 있으므로, 실생활에서 사용하는데 큰 문제가 없다. 실제로 유니코드는 윈도우즈 등 컴퓨터 운영체제와 프로그램에 반영되어 있으며, ‘아래아 한글’ 같은 워드프로세서에서도 텍스트 파일로 저장할 때 완성형 혹은 조합형뿐만 아니라 유니코드로 저장할 수 있는 기능이 있다.

1. 코드(Code)

컴퓨터의 가장 기본적인 기억 소자는 두 가지 상태, 즉 꺼진 상태와 켜진 상태(off/on)만을 가질 수 있고 이를 0과 1에 대응시킬 수 있다. 이렇게 0과 1의 두 숫자만으로 이루어진 숫자 체계를 이진 숫자 체계라고 하며, 두 가지 상태의 조합으로 주어진 자료를 표현하게 된다.

이진 체계는 십진 체계와 달리 0과 1로 모든 수를 나타낸다. 이 0과 1을 나타내는 기본 단위를 이진 체계에서는 ‘binary digit’를 줄여 비트(bit)라고 부른다. 비트는 컴퓨터에서 주기억장치에 데이터를 기억시키는, 정보 전달의 가장 기본적인 단위이다. ‘코드’(code)란 컴퓨터에서 특정한 데이터를 표현하는 비트(bit)의 나열을 뜻하며, ‘부호’라고도 한다.

컴퓨터에서는 문자나 숫자를 막론하고 그 내부에서 처리되는 모든 정보는 컴퓨터가 이해할 수 있는 오직 하나의 자료 형태인 숫자(2진수),

즉 비트의 나열로 표현된다. 따라서 사람이 인식할 수 있는 숫자나 문자는 컴퓨터 내부에서 그에 대응되는 2진수로 표현이 되어야 한다. 이러한

Page 3: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 3

문자와 2진수의 대응 관계를 문자 코드라고 한다. 이때 코드라는 개념은 비단 컴퓨터 내부 처리뿐만이 아니라 컴퓨터와 컴퓨터 그리고 컴퓨터와 주변 기기 사이의 정보 교환에도 마찬가지로 적용된다.

문자 코드에는 문자와 그 코드 값의 대응 관계뿐만 아니라 그 코드 체계에 따라 문자를 표현, 처리하거나 정보 교환할 때 지켜야 할 각종 제약 사항을 명시하는 것이 일반적이다. 문자와 코드값의 대응 관계 및 제약 사항을 합쳐 코드 체계 혹은 부호계라고 한다.1)

데이터는 컴퓨터상에서 0과 1의 조합으로 표시되는데, 이때 하나의 값을 비트라고 부른다. n개의 비트를 가지고 표현할 수 있는 코드의 종류는 2n이 된다. 이렇게 계산해 보면 6개의 비트로는 64개, 7개의 비트로는 128개, 8개의 비트로는 256개의 데이터를 조합할 수 있다.

이때 8비트를 1바이트라고 하므로 1바이트를 사용하면 모두 256종류의 코드를 구성할 수 있다. 컴퓨터에서는 8비트를 묶어 바이트라고 부르는데, 대개 하나의 문자를 표시하는 데 많이 사용된다. 그리고 정보를 나타내는 통상적인 단위가 있는데, 보통 8비트, 16비트, 32비트, 64비트 등으로 구성된다.

2. 문자 코드의 역사

1968년 이른바 ASCII라는 약자로 더 잘 알려진, 정보 교환용 미국 표

1) 비트(bit)는 컴퓨터 내부에서 데이터를 표현하기 위해 사용되는 최소의 단위이다. 2진수 한 단위로서 0이나 1을 기억하는 단위이다. 물리학적으로 말하면 일종의 원자와 같은 것이다. 바이트(byte)는 8개의 비트(bit)를 연결하여 표현되는 단위이다. 하나의 숫자, 문자, 기호를 표시한다. 물리학적으로 말하면 일종의 분자와 같은 것이다.

Page 4: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

4 | 프랑스어와 컴퓨터

준코드가 표준화되었다. ASCII에서 다양한 문자에 숫자 코드를 부여했는데, 그 수치는 0에서 127에 이른다. 예를 들어, 소문자 ‘a’는 97이 그의 코드값으로 할당되었다.

원래 ASCII는 미국 표준이었다. 그래서 특수문자가 없는 문자만 정의되었다. ‘e’는 있었지만, ‘ê’이나 ‘Î’는 없었다. 이는 곧 특수문자가 있는 문자를 요구하는 언어가 ASCII로는 제대로 표현할 수 없다는 뜻이다.

실제로 특수문자의 부재는 영어에도 문제가 되었는데, 예를 들어 ‘naïve’

와 ‘café’ 같은 문자를 표현할 수 없었다.

프랑스어로 1980년 중반에 출간된, BASIC 프로그램을 본 기억이 있는데, [표 1]과 같은 내용이 있었다.

PRINT "FICHER EST COMPLETE."PRINT "CARACTERE NON ACCEPTE."

[표 1] 프랑스어 특수문자가 빠진 BASIC 명령어

이 메시지에는 특수문자가 포함되어 있어야 하며, 프랑스어를 아는 사람에게는 완전히 엉터리로 보였다. 1980년대에 대부분의 개인용 컴퓨터는 8비트였고, 1바이트로 0에서 255 범위의 값을 담을 수 있다는 뜻이다. ASCII 코드는 127까지만 숫자와 알파벳을 부여하였다. 그래서 어떤 컴퓨터에서는 특수문자를 128에서 255 사이에 코드 값을 할당할 수 있었다. 그렇지만 컴퓨터가 다르면 코드도 달랐다. 이 때문에 파일 교환에 문제가 생겼다. 마침내 다양하게 사용되는 범위가 128~255인 코드값이 출현하였다. 어떤 것은 국제표준화기구(ISO)에서 정의한 표준안이었고,

어떤 것은 한두 회사에서 고안되어 인기를 얻는 데 성공한 코드였다.2)

Page 5: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 5

유니코드는 8비트 문자 대신에 16비트 문자를 사용하면서 시작되었다. 16비트라는 것은 2^16 = 65,536개의 구별된 값을 사용할 수 있어서,

다양한 알파벳으로부터 유래한 많은 문자를 표현할 수 있다. 처음 목표는 유니코드에 인류 언어의 알파벳을 모두 담는 것이었다. 그런데 16비트조차도 그 목표를 충족하기에 부족했다. 그래서 현대의 유니코드 규격에서는 더 넓은 코드, 0에서부터 1,114,111(16진수로 0x10ffff임)까지의 범위를 사용한다.

유니코드와 ISO 10646은 원래 따로 시작되었지만, 유니코드 1.1 개정판에서 그 규격이 통합되었다. 유니코드 문자는 코드 포인트의 연속열이며, 코드 포인트는 0에서 0x10ffff까지의 숫자이다. 이 연속열은 메모리에서 바이트 집합(즉, 0~255의 값)으로 표현될 필요가 있다. 유니코드 문자열을 바이트 연속열로 번역하는 규칙을 이른바 인코딩(encoding)이라고 한다.

ISO-8859-1이라고도 알려진 Latin-1도 비슷한 인코딩이다. 0~255까지의 유니코드 코드 포인트는 Latin-1 값과 같다. 그래서 이 인코딩으로 변환하려면 그냥 코드 포인트를 바이트 값으로 변환하기만 하면 된다.

255보다 큰 코드 포인트를 만나면, 그 문자열은 Latin-1로 인코딩할 수 없다. 인코딩은 Latin-1처럼 간단한 1대1 짝짓기일 필요는 없다. IBM의

2) 255개의 문자는 그렇게 많은 것이 아니다. 예를 들어, 서유럽에서 사용되는 특수 문자와 러시아어에 사용되는 키릴 알파벳 모두를 128~255 범위에 맞출 수는 없다. 그런 문자는 127개가 넘기 때문이다. 이런 문제를 해결하기 위해, 다른 코드를 사용하여 파일을 작성하기도 하였다. 러시아 파일은 모두 KOI8이라는 코드 시스템으로, 프랑스어 파일은 모두 Latin-1이라는 다른 코드 시스템으로 작성할 수 있다. 그러나 러시아어 텍스트를 인용한 프랑스어 문서를 작성하려 할 때, 어려움이 있었다. 1980년대부터 사용자가 이 문제를 해결하고 싶어 했으며, 여기서 유니코드 표준화 노력이 시작되었다.

Page 6: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

6 | 프랑스어와 컴퓨터

EBCDIC(Extended Binary Coded Interchange Code)를 생각해 보자. 이는 IBM 메인프레임에 사용된 적이 있다. 글자 값은 한 구획에 있지 않았다.

‘a’에서 ‘i’까지는 129에서 137까지의 값을 가졌지만, ‘j’에서 ‘r’까지는 145에서 153까지의 값을 가졌다. EBCDIC를 인코딩으로 사용하고 싶다면, 아마도 찾기표를 사용하여 변환을 수행해야 할 것이다. 가장 널리 사용되는 인코딩은 UTF-8이다. UTF는 "Unicode Transformation Format

(유니코드 변환 포맷)"의 약자이며, ‘8’은 8비트 숫자가 인코딩에 사용된다는 뜻이다. UTF-16 인코딩도 있지만, UTF-8보다는 사용빈도가 낮다.

3. 코드 체계의 종류

먼저 가장 널리 쓰이는 아스키코드에 대해 간단히 알아보고, 한글 코드와 유니코드의 상관관계에 대해 알아보기로 하자.

3.1. 아스키(ASCII)코드

컴퓨터를 처음 개발하여 사용하던 초기에는 미국의 컴퓨터 회사가 여러 종류의 코드를 사용했으나 점차 수가 줄어들었다. 그 후 가장 많이 사용되고 있는 코드 체계가 아스키코드이다. 이것은 세계적으로 널리 쓰이는 영문자 코드체계로서, 국제표준화기구(ISO)에 의해 IS0 10646이라는 이름으로 정의되어 현재 정보 처리 부호의 표준으로 사용되고 있다.

그러나 최근에 들어와 전 세계의 모든 문자를 처리할 수 있는 코드의

Page 7: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 7

제정 필요성이 높아지면서 새로운 형태의 국제 표준 부호 제정 움직임이 활발하게 이루어지고 있다. 아스키코드에 정의된 128개의 문자는 7비트로 표현되며, 패리티(parity) 비트를 포함하여 8비트로 구성된다. 이 코드에는 A에서 Z까지의 영문 대문자, a에서 z까지의 영문 소문자가 모두 52개, 0에서 9까지의 숫자 10개, +, -, !, @, # 등 특수 기호 및 기타 제어 기호를 포함하여 총 128개를 조합할 수 있다.

모든 아스키코드는 0x00에서 0z7f사이에 있으므로, 8비트 중 7비트에 들어간다. 즉 모든 아스키 문자의 최상위 비트는 항상 0으로 정해진다.

1바이트 데이터를 사용할 경우 남는 1비트는 컴퓨터 통신에서 패리티 비트(parity bit)로 사용되어 데이터 전송의 정확성을 높이는 데 이용된다.

3.2. 한글 코드

한글 코드는 우리나라에서 사용되는 문자를 컴퓨터 내부에서 2진수로 표현하기 위한 대응 규칙이다. 여기에는 한글뿐만 아니라, 영문자, 숫자,

한자, 각종 문장 부호 등을 모두 포함하는 것이 일반적이다. 컴퓨터는 기본적으로 영어권 문화에서 만들어진 것이므로 컴퓨터를 쉽게 다루기 위해 영어로 된 명령어를 사용하도록 제작되었다. 1980년대에 국내에 처음 컴퓨터가 들어 왔을 때에는 소수의 전문가만이 컴퓨터를 사용하였으므로 영어를 그대로 사용했다. 점차 컴퓨터 보급이 늘어나면서 한국어로 된 명령어와 한국어를 처리할 수 있는 프로그램의 필요성이 대두하였다.

그런데 그 당시 컴퓨터로 한국어를 처리하려면 여러 가지 어려움이

Page 8: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

8 | 프랑스어와 컴퓨터

있었다. 가장 큰 문제 중의 하나는 기본적으로 컴퓨터가 1바이트(8비트)

체계로 되어 있어서 최대 표현할 수 있는 문자 수가 256(28)자였다는 점이다. 현대 한글은 11,172자이므로 1바이트 체계로는 현대 한글을 표현할 수 없었다. 이에 따라 기업과 개인이 각각 한글을 처리하는 방법을 고안하게 되었고, 다양한 한글 코드가 나오게 되었다.

컴퓨터에서 한글 구현에 관련된 문제로는 한글 코드, 한글 자판, 한글 글자꼴 등이 있다. 그중에서도 가장 대표적인 문제는 한글 코드이다. 왜냐하면, 우리나라에서 컴퓨터를 통해 정보를 전달하는 데 있어 가장 기본적인 매체가 한글이기 때문이다. 이 같은 이유로 국가에서도 한글 코드에 관련된 문제를 해결하기 위해 한글 코드 표준화 작업을 지속적으로 추진해 왔다. 그 결과 1987년에 KS 5601 완성형 한글 코드로 한글을 표준화하였으며, 그것의 문제점을 개선하여 1989년에는 KS 5657을 새로이 제정하였다. 그러나 이 역시 컴퓨터에서 한글을 완벽하게 구현하지 못하여 1995년에 KS 5700을 표준코드로 제정하였다. 이 KS 5700은 국제표준화기구에 정식으로 등록된 한글 코드이다.3) 지금까지 한글 코드 표준화 작업이 지속적으로 추진됐는데, 한글 코드 제정의 변천사를 간략하게 정리하면 [표 2]와 같다.

3) 한글 코드는 분류하는 기준에 따라, 한글 데이터를 모두 아스키 128자 미만의 문자로만 구성되는 7비트 형태가 있고, 영문은 128자 미만의 문자로 표현하고 한글은 128자 이상의 문자로 표현하는 8비트 형태가 있다.

Page 9: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 9

코드이름 제정연도

코드 형태 한글만의 특징 주관

KSC-5601-1987 1987 2바이트완성형

∙최초의 국가 지정 표준코드.∙한글 2,350자 지원. 공업진흥청

KSC-5601-1992 1992 2바이트조합형 ∙현대 한글 음절 11,172자 추가. 공업진흥청

KSC-5700-1995 1995 완성형, 조합형

∙한글의 입출력을 컴퓨터 내부에서 처리할 수 있는 코드 체계.∙조합형 형식으로 사용 가능한

한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코드체계.∙한글 표준문자코드로 제정됨.

공업진흥청

[표 2] 한글 코드 제정 변천

지금까지 한글 코드 표준화 작업은 다양한 형태로 전개됐지만, 여러 가지 문제점을 안고 있다. 한글 코드는 컴퓨터에서 한글을 어떻게 표현하느냐에 관한 규정이므로, 바람직한 한글 코드를 논하기 위해서는 한글이라는 문자 체계에 대한 체계적인 조사와 연구가 필요하다. 한글 코드 문제는 기술적인 측면에서의 효율성만을 가지고 접근할 성질의 것이 아니다. 한글 코드의 표준안은 산업계 및 일반 국민의 문자 생활에 매우 커다란 영향을 미친다.

따라서 한글 코드의 문제에 접근할 때 기술적 측면 이외에 문화적,

산업적 측면에서 다각적인 노력이 필요하다. 또한, 근래에 들어와 전 세계의 모든 문자를 단일한 코드 체계로 통합하려는 움직임이 활발하게 이루어지고 있는 가운데 국제 표준 제정의 추세에 적극적으로 대처할 필요가 있다.

한글은 자모의 조합에 의한 모아쓰기라는 특성을 갖추고 있는 만큼,

이러한 특성을 컴퓨터에서 제대로 구현하는 것이 중요하다. 먼저, 조합

Page 10: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

10 | 프랑스어와 컴퓨터

가능한 모든 한글을 표현할 수 있어야 한다. 한글 코드는 컴퓨터에서 한글을 표현하려는 방법이므로, 적어도 현재 우리가 사용하고 있는 한글 맞춤법에 따라 조합 가능한 한글 음절이 모두 표현될 수 있어야 한다.

한글은 초성, 중성, 종성이 결합하여 하나의 글자를 이룬다. 현대 국어에서 사용되는 초성, 중성, 종성으로 조합하여 표현 가능한 글자는 총 11,127자이다. 이외에 초성, 중성, 종성 가운데 하나 또는 두 개가 없는 불완전한 음절 또한 처리할 수 있어야 한다.

또, 옛 한글을 현대어와 같은 수준으로 사용할 수 있어야 한다. 옛 한글은 국어학자만 필요한 것이 아니다. 적어도 옛 문헌에서 자주 쓰이는 옛 한글을 가능한 한 모두 처리할 수 있어야 한다. 특히, 한자와 특수문자 등을 사용할 수 있어야 한다. 우리나라에서 사용되는 문자는 한글뿐만 아니라, 기타 수많은 한자, 외국 문자, 그리고 각종 문장 부호와 특수 기호 등이 있다. 따라서 이 문자 또한 만족할 만한 수준에서 사용할 수 있어야 한다. 끝으로, 한국어 정보 처리에 적합해야 하며, 국제적인 표준 규격에 상응해야 한다.

비표준 한글 코드는 KS 표준 이외에 우리나라에서 사용되는 코드 체계를 말한다. 이러한 비표준 한글 코드는 대체로 특별한 목적, 특히 학술적인 목적을 위해 임의의 기관, 단체, 업체에서 만들어 사용하였다. 비표준이라는 문제점에도 불구하고 이 코드 체계가 등장하게 된 주된 이유는 표준코드가 지니고 있는 문제와 한계 때문이다. 표준코드는 주로 현대의 문자 생활만을 반영하고 있기 때문에, 과거 시대의 문자 생활을 제대로 표현할 수 없다.

정부가 주도하여 만든 코드 체계는 현대 사회에서 정보 교환을 목적으로 하였기 때문에 한글의 경우에는 현행 맞춤법의 범위 내에서 사용할

Page 11: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 11

수 있는 문자만을 제공하며 한자의 경우에는 사용 빈도가 높은 글자로 제한하였다. 따라서 학술용으로 사용하기에는 여러 가지 제약과 한계를 안고 있다. 이를 해결하기 위해 개인 연구자와 학회 및 기관 그리고 소프트웨어 업체에서 다양한 방법을 제안해 사용하고 있다.

‘아래아 한글’은 출발 당시에는 흔히 상용조합형이라고 불리는 KSSM

체계만을 지원하였다. 2.0판 이후에는 모든 문자(영문자와 숫자를 포함하여)를 2바이트로 처리하는 체계로 바뀌었다. 그 결과 최대 65,536자의 수용 능력을 가지게 되었다. 이에 따라 한자의 경우 4,888자 이외에 10,880자를 추가로 처리할 수 있으며, 옛 한글의 경우 4,000여 자를 처리할 수 있게 되었다.4)

비표준 문자는 국가에서 제정한 표준코드에 아직 수용되지 않은 문자를 말한다. 표준코드 체계에 수용된 문자만으로 일상적인 언어생활을 영위하는 데에 큰 지장은 없다. 그러나 국어 교육에서도 비표준 문자가 사용되고 있으며, 나아가 한글 및 한자 등 우리의 문자 체계를 바탕으로 한 전문적인 연구와 자료 전산화 등에 있어서는 더욱 확장된 코드 체계가 절실하게 필요하다.

현재의 컴퓨터 사용 환경에서는 어느 나라에서든지 일정한 수의 문자를 자국의 표준코드 체계 안에 수용하여 각종 정보에 활용하고 있다.

그러나 표준코드에 포함되지 않은 문자 가운데에서도 연구, 교육, 출판 및 정보 처리에 필요한 문자가 자주 발견되며, 특히 한국․중국․일본과 같은 한자 문화권 국가에서는 그러한 일이 매우 흔하다. 예컨대 조

4) 현재의 ‘아래아 한글’ 코드는 내부 코드를 모두 2바이트로 처리했기 때문에 옛 한글이나 한자를 처리할 수 있는 광범위한 코드 영역을 할애할 수 있다. 이뿐만 아니라 유니코드도 활용할 수 있다. 그러나 ‘아래아 한글’ 코드는 그 프로그램 내부에서만 통용되는 것이기 때문에 자료 활용의 방법과 범위에 제약을 안고 있다.

Page 12: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

12 | 프랑스어와 컴퓨터

선왕조실록이나 문집을 전산화할 때, 국가 표준코드에 포함되어 있지 않은 한자가 수없이 많이 출현한다. 더구나 한자의 경우에는 이체자(異

體字) 때문에 제한된 코드 체계를 사용할 수 없는 예가 상당히 많다.

KSC 5601에서 정의한 4,888자의 한자로는 턱없이 부족하며, 비표준 한글 코드 체계인 ‘아래아 한글’에서도 15,000여 자밖에 지원하지 못하기 때문에 한문 문헌의 전산화를 위해서는 비표준 한자에 대한 체계적인 조사와 연구가 절실히 요구된다.

우리나라의 경우에는 훈민정음 창제 이래로 한글 자소와 표기법이 다양하게 변천해 왔기 때문에 표준 규격 이외의 문자를 정보 처리에 수용하는 문제가 더욱 절실하다. 현재까지 발견된 옛 한글만 하더라도 5,000

여 자를 웃돌며, 옛 한글에서 사용된 초성, 중성, 종성의 문자는 각각 125자, 95자, 142자이다. 이를 조합해서 만들 수 있는 한글의 글자 수(현대 한글 11,172자를 포함해서)는 산술적으로 계산해 보면 1,655,152개이다. 여기에 한문의 해독을 위해 또는 한문을 우리말로 풀어서 읽기 위해 사용해 온 구결 문자가 있다. 구결 문자는 현재 한글 표준코드 또는 유니코드 어디에도 정의되어 있지 않은 비표준 문자이다.

한자 문화권을 중심으로 하는 동아시아 국가에서는 일찍부터 다양한 분야의 비표준 한자를 대규모로 구축해 왔을 뿐만 아니라, 이를 통합,

가공하여 효과적인 사용을 도모하려는 각종 사업을 범기관적, 범국가적으로 실시하고 있다. 대표적으로 대만은 이른 시기부터 한자 처리에 관심을 기울여 다른 나라보다 기술적으로 상당한 진전을 이루었다. 특히 방대한 한자 데이터베이스 구축 작업을 통해서 축적된 비표준 한자 처리에 대한 연구는 주목할 만하다. 일본은 2차 대전 이후 정부 기관, 연구소,

출판사, 신문사 등에서 한자사용 빈도를 광범위하게 조사하였다.

Page 13: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 13

신문과 잡지를 대상으로 추출한 한자 빈도를 사용률에 따라 순위별로 일목요연하게 조사함으로써 일본어 교육과 정책의 기초 자료로 적극적으로 활용하였다. 아울러 신문, 잡지의 한자 빈도 조사 결과와 그 밖의 3종류의 한자 빈도 조사 결과를 종합적으로 점수화하여 수준별(제1수준,

제2수준, 제3수준)로 한자표를 제시하기도 하였다. 이와 같은 외국의 상황에 비추어 볼 때 우리의 현황은 상대적으로 미흡한 실정이며, 국가적인 차원의 비표준 문자 구축 지원과 기초 연구의 활성화가 필요하다.

물론 우리나라에서도 비표준 문자의 중요성을 인식하고 관련 자료 수집 및 구축이 시도되었다. 그러나 대개는 개인 혹은 대학과 연구소를 중심으로 한 제한적인 연구용으로 구축되고 있으며, 광범위한 전문 영역에서의 공동 활용과 일반 사용자에 대한 공개까지 염두에 두지는 못하고 있다. 현재까지 산발적으로 진행되고 있는 연구 관행에서 벗어나 학계,

정보 산업체, 언론, 출판사 등 공동의 노력을 통해 비표준 문자(한자, 옛 한글, 기타 특수문자)를 광범위하게 수집, 정리하는 한편 수집된 비표준 문자를 효과적으로 지원할 수 있는 전산 처리 방법을 개발할 필요가 있다.

3.3. 유니코드(Unicode)

본 장에서는 유니코드가 어떻게 만들어졌으며, 문자 세트는 어떤 것이 있고, 한국에서 유니코드를 어떻게 사용할 것이지 알아보기로 한다.

정보 교환이란 서로 다른 시스템 사이에서 정보를 이용하기 위해 하나의 시스템에서 다른 시스템으로 정보를 전달하는 것을 의미한다. 한글, 한자, 영문자를 포함하여 현재 세계 모든 문자는 정보 교환을 위해

Page 14: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

14 | 프랑스어와 컴퓨터

각기 다른 부호 체계를 사용하고 있기 때문에 많은 문제점을 안고 있다.

1980년에 들어와 전 세계적으로 컴퓨터의 보급이 확산되고, 특히 영문자를 사용하지 않는 아시아권 국가에서 컴퓨터 이용도가 높아짐에 따라 문자 코드의 국제적인 표준화에 대한 관심이 커지기 시작하였다. 이와 함께 지난 수십 년간 문자 코드 표준으로 주로 사용됐던 ASCII 코드나 EBCDIC 코드가 지닌 문제점에 대한 지적도 많아지기 시작하였다.

대소문자와 숫자, 기호를 모두 합하여 100개 미만의 기호를 사용하는 영문자 문화권에서는 128자만을 나타낼 수 있는 아스키코드가 별로 불편하지 않다. 그러나 사용해야 할 글자의 숫자가 수천에서 수만에 이르는 한국, 중국, 일본 등 동양권 국가에서는 이러한 1바이트 코드 체계로는 자국에서 쓰이는 문자를 수용하지 못하므로 이를 해결하기 위해 다양한 노력을 기울여 왔다.

1984년 무렵부터 세계 모든 국가에서 사용하는 문자를, 하나의 단일한 멀티 바이트(multi-byte)코드 체계로 통합하려는 움직임이 진행되었다. 이러한 멀티 바이트 코드 체계의 개발은 다음과 같은 몇 가지 배경에서 더욱 촉진되었다.

전 세계의 모든 문자를 단일한 코드 체계로 통합하려는 움직임은 크게 두 갈래로 진행됐다. 하나는 국제표준화기구(ISO)가 추진해 온 IS0

10646의 제정 움직임으로, 이를 하나의 Universal Character Code Set이라고 한다. ISO는 1980년대 이후 현행 서양 문자표시용인 7비트 규격으로는 세계 모든 문자를 하나의 코드 체계 안에 통합할 수 없음을 인식하고 멀티 바이트(실제로는 2바이트 또는 4바이트) 코드로 규격화하는 방안을 추진해왔다.5)

5) 이와는 별도로 IBM, 애플, 휴렛패커드 등 미국의 컴퓨터 업체가 컨소시엄을 구성하

Page 15: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 15

* 국제적으로 컴퓨터의 이용이 일반화되고 있다.* 소프트웨어의 크기가 커짐에 따라 각국 버전을 만들기 위한 변환 비용이 증대되고

있다.* 16비트 이상 32비트급의 프로세서가 일반화되고 있다.* 하드웨어의 가격 하락으로 멀티 바이트 문자 체계를 지원하는 비용이 크게 문제

되지 않게 되었다.* 단일한 코드 체계로 전 세계에 사용되는 문자 및 각종 기호를 모두 표현하는

시스템이 필요해졌다.

[표 3] 멀티 바이트 필요성

유니코드는 기본적으로 2바이트로서 전 세계에서 사용되는 모든 문자를 나타내는 것을 목표로 하며, 65,536자의 코드 영역을 사용하고 있다.

또한, 유니코드는 정보 교환뿐만 아니라 내부 처리에도 적용되는 체계임을 명시하고 있으며, 중복되는 글자는 최대한 통합하여 모호하지 않은 문자 집합을 구성하는 것을 목표로 하고 있다. 유니코드의 특성은 전 세계의 모든 언어를 포함하고, 16비트의 길이로 효율성을 높이고, 문자 코드의 중첩을 최소화하려는 것으로 그 이름도 이러한 특성에서 연유하고 있다.

유니코드는 기본 다국어 문자판(BMP, Basic Multilingual Plane)이라고 하는 곳에 전 세계의 모든 문자를 수용하도록 하였다. 여기에는 영문자, 음절 문자, 표의 문자, 기호 및 숫자 등을 포함하고 있으며, 문자의

여 추진한 유니코드다. 이들 회사는 전 세계, 특히 동아시아의 소프트웨어 시장장악을 염두에 두고 16비트 코드를 기본으로 전 세계 문자를 표시하려는 구상을 세웠다. 유니코드는 16비트로 구성되는 문자 공간(65,536자)에 세계 각국의 문자를 할당하고자 하였다. 이 두 개의 움직임이 별도로 추진되다가 1993년 9월 국제표준화 규격인 Universal Multiple-Octet Coded Character Set(UCS)로 통일되었다. 국제표준화기구(ISO)의 ISO 10646으로 규정된 UCS 코드와 유니코드 컨소시엄의 유니코드는 개념상 별개의 것이지만, 실질적으로는 같으므로 유니코드라는 이름으로 이 모두를 지칭한다.

Page 16: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

16 | 프랑스어와 컴퓨터

특수한 사용을 위해 제한 영역을 설정하고 있다. 전 세계 모든 문자를 통합시켜 놓은 기본 다국어 문자판에서 사용 가능한 65,536개의 문자 공간 가운데 현재 한자는 약 32%, 한글은 약 17%를 차지하고 있다.6)

유니코드는 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 코드 규약의 이름이다. 8비트 문자코드인 아스키(ASCII)

코드를 16비트로 확장하여 전 세계 모든 문자를 표현하는 표준코드이다.

아스키코드는 8비트로 표현할 수 있는 영어나 라틴어권 등에서는 문제가 없으나, 한국, 일본, 중국, 아랍 등의 다양한 문자를 표현하는 데는 한계가 있다. 또한, 각 나라마다 같은 코드 값에 다른 글자를 쓰는 방식으로는 국제간 원활한 자료 교환이 불가능하므로, 코드를 16비트 체제로 확장해서 65,536자의 영역 안에 전 세계 모든 글자를 표시하는 표준안이 유니코드이다.

영어를 사용하는 국가에서는 아스키코드보다 두 배의 공간이 필요하므로 일반적인 통신 등에서는 그만큼 공간이 낭비되지만 유니코드를 이용하면 프로그램을 하나만 만들면 모든 나라 글자를 처리할 수 있기 때문에, 그만큼 이점도 크다. 11,172자의 한글을 연속된 공간에 가나다라 순서로 ‘가’에서 ‘하’까지를 코드화하는 방식이 유니코드 기술 위원회(UTC)에서 채택한 유니코드 2.0이다. 제한된 글꼴 자원으로 인해, 유니코드 로컬은 [표 4]와 같은 문자 세트의 문자 모양만 포함한다.

6) 유니코드의 주요 특징으로 먼저 지적할 점은 산스크리트어와 같이 현재 사용하지 않는 문자까지를 포함하는 등 텍스트 작성에 필요한 모든 문자를 포괄한다는 것이다. 그리고 코드 길이를 16비트로 같게 함으로써 명료성과 효율성을 높이며, 각각의 부호가 한 개의 문자만을 표현하기 때문에 모호함을 배제할 수 있다.

Page 17: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 17

∙ISO 8859-1 (영어, 프랑스어, 스페인어, 독일어와 같은 대부분의 서유럽 언어)∙ISO 8859-2 (체코어, 폴란드어, 헝가리어와 같은 대부분의 중부 유럽 언어)∙ISO 8859-4 (스칸디나비아어와 발트어)∙ISO 8859-5 (러시아어)∙ISO 8859-6 (아랍어)∙ISO 8859–7 (그리스어)∙ISO 8859–8 (히브리어)∙ISO 8859-9 (터키어)∙TIS 620.2533 (태국어)∙ISO 8859–15 (유럽 기호가 있는 대부분의 서부 유럽권 언어)∙GB 2312–1980 (간체 한자)∙JIS X 0201–1976, JIS X 0208–1990 (일본어)∙KS X 1001: 1992 (한국어)∙GB 18030 (간체 한자)∙HKSCS (정체 한자, 홍콩)∙Big5 (정체 한자, 대만)∙ISCII라고도 하는 IS 13194. 1991(힌두어)

[표 4] 나라별 유니코드 문자 세트

유니코드란 지구상에 존재하는 모든 문자를 전부 다 표현하겠다는 발상에서 만들어진 문자 코드 시스템이다. 그런데 유니코드에 대해서 몇 가지 잘못 알고 있는 경우가 종종 있다. 일단 많은 사람이 오해하는 부분은, 유니코드가 16비트, 즉 2바이트 문자라고 생각하고 있다는 것이다.

그래서 유니코드가 0 ~ 65,535까지의 코드로 모든 문자를 다 표현하고 있다고 생각하는데, 사실 현재 정의되어 있는 유니코드 값은 이미 65,535를 초과하고 있다.

이런 오해는 한글이나 일본어, 중국어 등, 아시아권을 비롯한 비영어권 문자가 2바이트 문자 체계를 가지고 있기 때문이며, 당연히 유니코드도 그렇다고 생각한다. 이런 오해는 유니코드의 인코딩 개념이 다르다는 점을 알지 못하기 때문에 생긴다. 유니코드 이전의 인코딩 방식에서는,

Page 18: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

18 | 프랑스어와 컴퓨터

문자 코드를 메모리나 디스크에 저장하였다. 그러나 유니코드를 인코딩할 때는 이런 상식이 통하지 않는다. 왜냐하면, 유니코드를 인코딩하는 방식은 여러 가지가 있기 때문이다.

모든 문자가 2바이트로 인코딩되다 보니, 1바이트 단위로 문자를 읽어대는 구식 영어문화권의 프로그램(ASCII만 취급하는)에서는 유니코드로 된 문서를 읽지 못한다. 비록 영어로만 쓰인 유니코드 문서도 읽지 못한다. 그래서 과거 영어 문자 체계와 호환되는 유니코드 인코딩 방식이 생겼다. 이것을 UTF-8이라고 부른다.7)

유니코드 인코딩 방식에서 한글이나 일본어, 중국어 같은 언어의 문자는 하나의 글자가 2, 3개의 바이트 단위로 쪼개져서 저장되는 수모를 당하게 된다. 그래서 한글 ‘가’를 UTF-8로 저장하면, ‘EA B0 80’로 변환 된다. 즉, 3개 바이트로 쪼개져서 저장된다. 어떻든, 영문만을 취급하는 시스템과도 호환성을 유지하면서, 다국어도 표현할 수 있고, 게다가 귀찮은 바이트 순서도 고려할 필요가 없어서, 웹에서 점차 UTF-8이 널리 쓰이고 있다. 엄밀히 말해, 유니코드와 유니코드의 인코딩은 다른 개념이다.

반면, EUC-KR은 한국에서 통용되는 한글, 한자 그리고 영문을 표현할 수 있다. 그러나 일본식 한자나 중국어의 간체자 등은 표현할 수 없다.

또한, 프랑스어의 악상이나 독일어의 움라우트 등도 표현할 수 없다. 다만 HTML 문서의 경우 EUC-KR도 외국 문자를 표현할 수는 있다.

7) UTF-8는 유니코드의 인코딩 방식 중 하나일 뿐이다. UTF-8은 이름에서도 느껴지듯이 유니코드를 8비트 단위로 끊어서 저장한다. 덕분에 영어 알파벳과 ASCII에서 사용되는 기본적인 기호 문자는 ASCII에서 쓰이는 것과 똑같은 형태로 저장된다. 따라서 영문으로만 쓰인 UTF-8 문서는 ASCII 문자를 쓰는 구식 시스템에서도 완벽하게 읽힌다.

Page 19: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제3장 디지털 정보 구현 | 19

EUC-KR에서는 한글 1자가 2바이트이지만 UTF-8에서는 한글 1글자가 3바이트이다. 그런데 영문, 숫자, 공백이나 특수기호 등은 1바이트이다.

오늘날 대부분의 기본 인코딩은 UTF-8로 지정되기 때문에, 웹페이지 콘텐츠가 KSC-5601이나 EUC-KR로 제작되어 있는 경우, 인코딩이 깨지게 된다. *.txt파일이나 *.html 파일을 UTF-8로 인코딩하면, 한 페이지에 전 세계 문자를 모두 표현할 수 있는 장점이 있다. 일반 유니코드에서는 Null 문자가 들어가기 때문에 인터넷 문서, 즉 HTML 문서 작성에 적합하지 않다. 인터넷에 올릴 *.html 파일 등을 유니코드로 작성할 때에는 UTF-8 인코딩을 따라야 한다.

그런데 한국어로 작성된 문서를 UTF-8로 인코딩하면 파일의 용량이 약간 늘어나는 단점이 있다. 서버 트래픽이 제한된 경우에는 UTF-8 인코딩이 좀 부담스러울 수도 있다. 그리고 국내에는 아직까지 UTF-8 인코딩이 널리 쓰이지 않고 대부분 EUC-KR 인코딩을 쓰고 있다. 그래서 특수문자가 깨지는 문제가 생기는 경우가 종종 있다.

이런 단점에도 불구하고, 한국어와 일본어, 중국어, 프랑스어가 다양하게 섞인 웹 문서를 만들 때 UTF-8로 인코딩하면 편리하다. HTML 문서를 UTF-8로 인코딩하기 위해서는 우선 HTML 파일 자체를 UTF-8로 변환해 준 후, [표 5]와 같이 메타(meta) 태그에 인코딩을 정의해 주어야 한다. EUC-KR의 경우도 마찬가지다.

<head><meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”/><title>페이지 제목</title></head>

[표 5] HTML 문서에 UTF-8 인코딩

Page 20: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

20 | 프랑스어와 컴퓨터

유니코드는 전 세계의 모든 문자를 한꺼번에 표현할 수 있는 인코딩이다. 따라서 한글도 완벽하게 표현할 수 있다. 전 세계적 범용성을 고려하고, 미래 지향적인 사이트를 만들려면 UTF-8을 쓰는 것이 좋다.

유니코드는 이미 한글 윈도우즈와 같은 운영 체제 내부에서 활용되기 시작했으며, 앞으로 내부 코드만이 아니라 정보 교환용 코드나 응용 소프트웨어에도 사용될 것이다. 종합하면, 유니코드란 전 세계 모든 문자를 약 65,000개의 기본 다국어 문자 세트로 통합하여 국가 간의 장벽을 허물고 자유롭고 신속하게 정보를 공유하기 위해 만들어진 단일 코드이다.

인터넷이 급속하게 확산되면서 국경 없는 정보 통신 시대가 열려 유니코드가 새로운 정보 환경을 주도하고 있다. 지금까지는 컴퓨터, 프린터, 소프트웨어 등에서 입출력하는 문자 체계가 각국마다 달랐기 때문에 세계적인 정보 업체의 시장 진출에 일종의 보호 장벽 구실을 하였다.

데이터베이스와 같은 정보 자원을 생산, 가공, 공급하는 입체에게는 이와 같은 코드 장벽이 문제가 된다.8)

앞으로 각국에서 축적된 학술용 데이터베이스 및 정보 자원이 조만간 유니코드로 변환될 것이다. 이뿐만 아니라 학술용 자료 대부분은 텍스트 자원의 공익적 특성이 있어 연구를 목적으로 한다면, 무료로 사용할 수 있다. 특히 학술정보의 국제적 소통이 활발해지면서 여러 국가의 연구 자원이 통합되고 있어, 다국어 데이터베이스 구축 사업이 촉진될 것이8) 코드 장벽이 무너짐으로써 정보 산업과 문화 산업이 이전보다 더욱 풍부하게 발전할

가능성이 열렸다. 멀리 내다보았을 때, 유니코드 환경은 전 지구의 지적 정보와 자원의 소통을 더욱 활발하게 해 줌으로써 인류 문화가 향상하는 데 크게 이바지할 수 있다. 현재의 코드 환경에서는 국가별 코드 세트에 들어 있는 각국의 문자를 동시에 입출력하는 것이 불가능하지만, 유니코드 환경에서는 세계의 모든 문자를 혼합하거나 병렬적으로 사용하는 정보 처리가 쉬워진다.

Page 21: 제3장 디지털 정보 구현 - myungwan.chonbuk.ac.krmyungwan.chonbuk.ac.kr/frcom/frcom_03.pdf · 한글 자모 240개와 완성형 음절 11,172개로 구성된 국제 문자코

제4장 디지털 정보 구축 | 21

다. 특히 디지털 자료는 그림, 사진, 음향 등의 자료와 함께 궁극적으로 ‘인류 문화유산 데이터베이스’와 같은 국제적 소통과 협력 관계가 더욱 늘어날 것이다. 방법론 측면에서는 이를 위한 표준화와 관련 기술의 축적 문제가 중요한 과제로 부각되고 있다.