정의
전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 만든 국제 표준 문자 코드예요. 각 나라의 언어와 기호, 이모지의 기본 문자 하나하나에 겹치지 않는 고유한 숫자 번호를 붙여요. 일부 이모지나 글자는 여러 번호를 조합해 나타내기도 해요.
외계어 문자 깨짐 현상이 일어났던 이유
인터넷 서핑을 하거나 오래된 파일을 열었을 때 글자가 '뛔똠'이나 '???'처럼 외계어로 깨져 나온 경험이 한 번쯤 있을 거예요. 컴퓨터 화면에 글자가 제대로 뜨지 않는 이유는 컴퓨터가 원래 글자를 전혀 모르는 기계이기 때문이에요.
컴퓨터는 오직 0과 1로 된 숫자만 이해할 수 있어요. 그래서 화면에 글자를 보여주려면 '1번은 A, 2번은 B'처럼 글자와 숫자를 짝지어 놓은 약속표가 꼭 필요해요. 이 약속표를 문자 집합 또는 문자표라고 불러요.
문제는 과거에 나라마다, 심지어 회사마다 저마다 다른 번호표를 만들어 썼다는 점이에요. 미국은 영어를 적기 위해 아스키라는 규칙을 썼고, 한국은 한글을 나타내기 위해 EUC-KR 같은 독자적인 규칙을 썼어요. 다른 번호표를 쓰는 컴퓨터에 문서를 보내면 기준이 서로 달라 글자가 사정없이 깨져버렸던 거예요.
전 세계 모든 글자에 하나뿐인 번호를 주다
컴퓨터가 여러 나라에 팔리고 한 프로그램에서 여러 언어를 함께 다루는 일이 늘면서 이런 혼란은 점점 큰 골칫거리가 되었어요. 나라마다 번호표가 다르니 소프트웨어를 만들 때마다 문자 규칙을 따로따로 맞춰야 했으니까요.
그래서 1980년대 후반 Apple·Xerox 등의 엔지니어들이 모든 인류의 문자를 단 하나의 커다란 표로 묶자는 구상을 시작했어요. 이것이 바로 '하나로 통일된 규칙'이라는 뜻을 품은 유니코드예요. 1991년에는 유니코드 컨소시엄이 세워졌고, 이후 인터넷이 퍼지면서 사실상의 세계 표준이 되었어요.
유니코드는 지구상에 존재하는 거의 모든 문자에 겹치지 않는 고유 번호를 하나씩 달아주었어요. 한글과 영어, 한자는 물론이고 아랍어, 힌디어, 심지어 고대 이집트 상형문자와 스마트폰 이모지까지 등록되어 있어요. 이제 컴퓨터는 전 세계 누구와 대화하든 번호만 확인하면 어떤 글자인지 곧바로 알아차려요.
조금 더 정확히 말하면: 번호와 저장 방식은 달라요
조금 더 정확히 말하면 유니코드는 글자에 번호를 붙여둔 번호표 목록이고, 이 번호를 컴퓨터 파일에 실제로 기록하는 방식은 또 달라요. 이 기록 방식을 인코딩이라고 부르며, 그중 가장 널리 쓰이는 표준이 바로 UTF-8이에요.
UTF-8은 글자마다 차지하는 데이터 크기를 다르게 조절하는 영리한 방식이에요. 유니코드 번호가 작은 영문과 숫자(아스키 범위)는 1바이트로 작게 저장하고, 번호가 큰 한글이나 한자는 3바이트, 이모지 등은 4바이트로 늘려서 유연하게 저장해요. 크기를 정하는 기준은 글자 모양이 얼마나 복잡한지가 아니라 번호가 어느 범위에 있는지예요.
여기서 꼭 기억해야 할 사실이 있어요. UTF-8이 옛 문서를 그대로 읽을 수 있는 범위는 과거 영문 규칙인 아스키뿐이에요. 옛날 방식인 EUC-KR이나 완성형으로 작성된 한글 문서를 UTF-8로 열면 여전히 글자가 깨져요. 유니코드가 문자에 변하지 않는 고윳값을 부여했더라도, 파일을 읽고 쓰는 저장 규칙이 일치해야 글자가 올바르게 보여요.
흔한 오해
유니코드와 UTF-8은 완전히 똑같은 말이다.
유니코드는 글자마다 고유한 번호를 배정한 '번호표 목록'이고, UTF-8은 그 번호를 컴퓨터 메모리에 0과 1로 효율적으로 저장하는 '기록 방식(인코딩)'이에요.
UTF-8 방식을 쓰면 옛날에 작성된 과거 한글 문서도 저절로 깨짐 없이 읽힌다.
UTF-8이 이전 규칙과 호환되는 범위는 과거의 영문 아스키(ASCII) 규격뿐이에요. 과거 완성형이나 EUC-KR로 저장된 한글 문서를 UTF-8 프로그램으로 열면 글자가 그대로 깨져요.
일상에서 만나요
스마트폰에서 친구에게 보낸 웃는 얼굴 이모지(😀)가 기기마다 그림체는 조금 달라도 상대방 아이폰이나 안드로이드폰에서 같은 웃는 얼굴로 표시되는 경우예요.
하나의 웹페이지 안에서 한국어, 영어, 일본어, 아랍어가 글자 깨짐 없이 한 화면에 나란히 적혀 있는 모습이에요.
그러니까 한마디로
유니코드는 전 세계의 모든 글자와 기호에 중복 없는 고유 번호를 매겨, 어떤 컴퓨터에서든 문자가 깨지지 않도록 만든 국제 표준 약속이에요.