Backends PHP

웹개발자를 위한 문자 인코딩 기초 #5 – UCS-2와 HTML Entity Number

기본 다국어 평면 만을 과감하게 선택한 UCS-2 방식

앞서 살펴보았던 유니코드의 문제점을 해결하기 위한 가장 간단한 방법은 무엇일까요. 다름 아닌 쾌도난마(快刀亂麻), 평면을 표시하기 위한 숫자가 거슬린다면 과감하게 그것을 잘라내는 것도 하나의 방법이겠지요.

UCS-2 방식이 바로 이 방법을 사용한 인코딩입니다. UCS는 국제 문자세트(Universal Character Set)의 줄임말입니다. 한편 숫자 2는 이 인코딩이 2바이트로 이루어져 있다고 하는 것을 의미합니다. UCS-2는 유니코드의 다른 모든 평면을 포기하고, 오로지 0번 기본 다국어 평면 만을 선택합니다. 사실 우리 시대에 전세계에서 사용하고 있는 거의 모든 문자는 기본 다국어 평면에 들어있으니, 일견 타당한 방법이기도 합니다.

UCS-2의 인코딩의 16진수 값들은 유니코드 기본 다국어 평면과도 완벽하게 같습니다. 유니코드에서 16진수 0xAC00로 정해진 한글 “가”는, UCS-2에서도 동일하게 [0xAC 0x00]에 배정되어 있습니다. 이렇게 유니코드에서 평면을 나타내는 숫자를 떼어버리고 나니, 1글자의 크기가 딱 2바이트로 깔끔하게 떨어지는 것도 장점입니다.

 

HTML Entity Number

UCS-2 방식은 현재 문서작성 등에 많이 사용되고 있지는 않습니다. 그럼에도 여전히 UCS-2 방식이 사용되는 곳이 있는데, 앞서 3편에서도 보았던 HTML Entity Number입니다. HTML Entity Number는 사실 UCS-2 방식의 16진수 코드를 10진수로 바꾸고, 앞에는 &#를 뒤에는 ;을 붙인 것입니다.

한글 “가”를 예로 들어보면, 다음과 같습니다. 반복하여 살펴보았듯이 “가”는 기본 다국어 평면에서 16진수 0xAC00에 해당하는데, 이것은 10진수로 44032가 됩니다. 이 숫자 앞에 &#를 뒤에 ;를 붙여준 “가”를 HTML 상에서 입력하고 웹 브라우저에서 열어보면 한글 “가”가 출력되게 됩니다.

<div>&#44032;</div>  <!-- "가" -->

과거에 HTML Entity Number가 잔뜩 쓰여진 글을 웹 게시판 등에 붙여넣고 저장하면 사랑고백을 하는 내용이 나타나는 UCC가 유행했었습니다. 많은 사람들이 신기하게 여겼던 내용이었지만, HTML Entity Number가 UCS-2 방식으로 이루어졌다는 것을 안 우리에게 이것은 더이상 신기한 것이 아닙니다. 우리는 이제 사랑고백 뿐 아니라, 아래처럼 연봉상향을 기원하는 부적을 만들어 지갑에 넣고 다닐 수도 있습니다.

연봉상향을 기원하는 부적

 

UCS-2의 한계

그러나 역시 UCS-2는 기본 다국어 평면 외의 문자를 사용할 수 없으므로, 이 방식으로는 모처럼 전세계 문자를 망라한 유니코드를 100% 활용할 수 없습니다. 이 문제를 해결하기 위해서는 역시 또다른 인코딩이 필요합니다. 다음 편에서는 유니코드를 모두 활용한 인코딩으로서 UTF-32를 먼저 살펴보도록 하겠습니다.

1 thought on “웹개발자를 위한 문자 인코딩 기초 #5 – UCS-2와 HTML Entity Number”

Leave a Reply to Mandol Kim Cancel reply

Your email address will not be published. Required fields are marked *