CAFE

☆ 프로그래밍 팁

[영어는 1BYTE이면서 한글은 2BYTE인 이유]

작성자천동이|작성시간04.12.28|조회수17,669 목록 댓글 0
똑같은 한 글자인데..
왜 차이가 나는 걸까요?
----------------------

글자의 수 때문입니다.  

애초 컴퓨터는 알파벳을 바탕으로 만들어졌기 때문에, 그들 문자가 충분히 들어갈 정도의 2진수 공간만 있으면 됐죠. 1바이트는 8비트, 총 256개의 문자를 만들 수 있습니다.

그 안에는 알파벳 대소문자 52자, 숫자 10자, 그리고 각종 기호를 다 넣고도 남죠.
따라서 기본적으로 아스키코드는 0~127까지만 사용합니다.

그러나 한글, 한자 등은 그렇지 못하죠. 한글은 당국에서 공인한 글자(이른바 완성형)만 해도 2500자 정도가 됩니다. 이러니 1바이트로는 어림도 없죠. 2바이트로 하면 총 6만 5천 자 정도를 사용할 수 있고요. 때문에 한글은 2바이트를 사용합니다.

참고로, 위에 어느 분이 타수를 논하셨지만 그것은 아닙니다. 애초 한글은 n바이트라는 개념을 사용했습니다. n바이트란, 한글 한 자를 치기 위해 필요한 타수를 말합니다.
'구'는 2바이트, '궈'는 3바이트, '권'은 4바이트가 필요한 것이죠.

이 n바이트의 가장 큰 문제 중 하나는, 글자가 잡아먹는 바이트수와 실제 화면에 보이는 것이 다르다는 점입니다. 2바이트는 두 자리, 4바이트는 4자리를 차지하게 만들 수는 없죠. 그러다 보니, 실제로 내부에서는 2바이트~4바이트를 잡아먹는데 화면에는 똑같은 자리를 차지하게 하다 보니 한 줄을 80바이트라 치고 글자를 썼을 때 뒤에 남는 공간이 다른 등의 문제를 보였죠.

n바이트의 또 다른 문제는 사실상 영어의 1바이트 체계를 받아들여서 단말기에서만 변화를 보인다는 점입니다. 특정 기호({)를 사용해 한글이 시작됨을 알리고, 영어의 소문자를 입력하면 ㄱ, ㄴ, ㅏ, ㅑ, 등으로 바뀝니다. 그리고 } 기호를 이용해 닫습니다. 이렇게 하면 겉보기에는 한글 형태로 나타나지만(한글 가능한 단말기에서만) 내부적으로는 알파벳 소문자 및 몇 개의 부호로 이루어진 것이죠. 이러니 자칫 부분적인 복사(흔히 말하는 긁어다 붙이기)를 잘못하면 한글이 깨어지고, 혹은 {
기호가 아무 데나 복사되어 들어가 영어 소문자가 한글로 변하고, 이런 문제가 심각했죠.

그 외에도 n바이트 한글에는 이런저런 문제가 있어 각 기업들이 저마다 2바이트를 만들어 배포했고, 때문에 한글끼리도 제대로 통용이 되지 않는 사태가 벌어졌습니다. 결국 문공부(혹은 문교부?)에서 통일한 지금의 2바이트 한글 완성형을 내놓은 것입니다.

그러나 요즘은 조합형 한글을 더 많이 쓰는 것처럼 보입니다. 그만큼 컴퓨터 용량도 커지고 다양화가 되었기 때문인지는 모르겠지만요.
다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼