IT_etc/유용한 전산 지식들..

문자 코드 및 인코딩

JJun ™ 2008. 1. 20. 23:35



 출처: http://blog.naver.com/i1j1jsy/70012767814




문자 코드(Character Code)
문자들의 집합과 이 문자들을 나타내기 위해 정한 숫자(문자 코드) 들을 1대 1로 연결시켜 놓은 것을 
말한다.

 

문자 인코딩(Character Encoding)
문자 코드를 컴퓨터가 이해할 수 있는 0과 1의 바이너리 값을 가지는 연속적인 비트 형태로 매핑시켜
주는 작업 이다.

 


ASCII 인코딩 체계

7개의 비트를 사용하여 총 128개의 문자까지만 표현한다.

32에서 17 사이의 숫자를 사용해서 표현할 수 있는  코드이며 7비트로 글자를 저장 한다.
마지막 1비트 여분으로 이후 128~255 까지의 공간에 제각각 무언가를 집어넣은 
OEM 문자집합 형식들이 고안되어
제멋대로 사용되었다. 
ANSY 표준위원회에서 ANSI 표준을 체계적으로 정리 하여 OEM 난투극을 종결.

지역에 따라 128 이상 문자를 다루는 방법이 존재하고 이런 각기 다른 시스템을  코드페이지 부른다
ex) 이스라엘 DOS 는 862, 그리스 737, 영어 437, 한국 949

DBCS(Double Bytes Character Set)는 8비트에 들어갈 수 없는 수천가지 글자로 이루어진 문자들을 두 바이트 문자 집합 시스템으로
해결한다. 
몇몇 글자는 1바이트로 저장하고, 다른 글자는 2바이트에 저장하는 골 때리는 방식 이다.

 


ISO-8859-1 인코딩 체계
서부 유럽권 국가에서 사용하는 문자들을 기존 ASCII 문자 집합에 포함시켜 새로운 문자 집합이 만들어졌는데
이것을 '서유럽 문자 집합' 또는 'ISO Latin-1' 이라고 불리는 'ISO-8859-1'이라는 문자 집합이다.

ASCII의 확장으로 ASCII 문자 코드가 채택한 7비트 코드체계로 다 수용할 수가 없기 때문에 8비트(1바이트)코드 체계를 사용한다.

 


유니코드(Unicode)
ASCII의 256 한계 값으로 인해 세계 모든 언어에 대한 문자 집합을 코드화시키는 것이 필요하여 
유니코드가 도입되었다.
인간이 사용하는 모든 언어를 표현할 수 있도록 국제화를 염두에 두고 설계된 
문자 코드이며, 기존 언어의 인코딩 체계를
모두 포함할 수 있도록 고안된 커다란 단일 문자 집합이다.

   ex) 유니코드 문자 집합을  표현할 수 있는 인코딩 방식을 사용하여 문서 작성시

하나의 문서내에 일부 한국어, 영어, 또다른 기타언어등으로 작성하는 것이 가능하다.
글자는 코드 포인터라는 단순히 이론적인 개념이다.
알파벳에 존재하는 관념적인 철자마다 고유번호를 붙여놓고 U+645라는 식으로 표현. 
이 고유 번호를 코드 포인터라고 부른다

유니코드에는 두 개의 대표적 문자 인코딩이 있는데 하나는 UTF-8이고, 다른 하나는 UTF-16이다.


 

UTF-8

파일 사이즈를 적게 하기 위해, ASCII 문자 코드는 1바이트로 인코딩하고, 다른 문자들은 2바이트나 그 이상으로 인코딩하는 방식이며 한글은 3바이트로 처리한다. 유니코드 코드 포인터를 따르는 문자열을 저장하기 위한 또 다른 시스템으로 8비트를 사용해서
매직U+넘버를 기억공간에 저장한다. 
당연한 얘기지만 ASCII 인코딩 체계 또는 UTF-8로 저장되었을 경우 동일하게 8비트 인코딩 체계를
사용하므로 서로 호환성이 있다. 
XML 문서에도 별도의 인코딩을 언급하지 않으면 디폴트로 UTF-8 사용.

 


UTF-16
간단하게 2바이트를 사용해서 모든 문자를 표현한다.(65,356개)
2바이트 16비트를 차지하기에 65,536개라는 가능한 문자만을 사용할 수 있는 
단순한 16비트 코드 시스템이 아니다. 

코드 숫자가 65,536을 넘었고 정의할 수 있는 글자 개수에 제한이 없다

 


KS C 5601(한국 표준문자 집합)
한국 표준 협의회가 한국 공업 표준(Korea Industrial Standard)으로 정한 
정보처리 분야(C)의 5601번 표준안 이다.

'KS C 5601'은 'KSC-5601' 또는 'KSC5601' 등으로 줄여서 불리기도 한다.
2 바이트를 사용해서 완성형 한글을 표현하는 방법을 기술하고 있다.
순수한 한글 코드에 대한 내용뿐 ASCII 문자에 대한 내용은 전혀 담고 있지 않다.

 


KS C 5636
ASCII 문자에 대한 표준 포함.
ASCII 문자 집합에서 역슬래시 대신에 한국의 통화기호 원 표시를 대치해 넣은 것으로

사실상 ASCII 문자 집합 코드와 같다고 볼 수 있다.

 


KS C 5861(EUC-KR)
Bell Laboratories에서 확장 유닉스 코드(Extended UNIX Code)라 하여

유닉스 운영체제에서 영어는 KS C 5636을, 한글은 KS C 5601을 사용하는 것을 말한다.
즉 ASCII 문자 코드는 1바이트로 표현하고 'KS C 5601'에 언급되어 있는 한글 문자 코드는

2 바이트로 표현한다. 한국 표준 협회에서 "유닉스 상에서의 한글사용"이라는 제목으로

KS C 5861로 등록 되어 있다.

 


[ 조엘 온 소프트웨어의 모든 개발자가 꼭 알아야 하는 유니코드와 문자 집합에 대한 고찰과 신민철님의 XML 웹서비스의 인코딩
  및 유니코드 내용을 정리한 문서 입니다. ]