Unicode

유니코드(Unicode)

1. 유니코드란?

유니코드(Unicode)는 전 세계의 모든 문자와 기호를 컴퓨터에서 일관되게 표현하기 위한 국제 표준 문자 체계이다.

과거에는 국가나 운영체제마다 문자 인코딩 방식이 달랐다. 대표적으로 한글은 EUC-KR, CP949 등을 사용하였고, 이로 인해 다른 환경에서 파일을 열거나 데이터를 전송할 때 글자가 깨지는 문제(궢귛귍귪궻귺긏긘깈깛)가 자주 발생하였다.

유니코드는 이러한 문제를 해결하기 위해 만들어졌으며, 운영체제·프로그래밍 언어·플랫폼에 관계없이 동일한 문자를 동일하게 표현하는 것을 목표로 한다.


2. 유니코드가 필요한 이유

유니코드를 사용하는 가장 근본적인 이유는 전 세계 어디서든 동일한 텍스트를 동일하게 표현하기 위해서이다.

유니코드가 없다면 다음과 같은 문제가 발생한다.

  • 운영체제마다 문자 표현 방식이 다르다.
  • 국가마다 문자 인코딩 규칙이 다르다.
  • 파일을 다른 환경에서 열었을 때 글자가 깨진다.
  • 다국어 서비스를 개발하기 어렵다.

현재 웹 서비스, 모바일 애플리케이션, 데이터베이스, 인공지능 시스템 등 대부분의 소프트웨어는 유니코드를 기본 문자 체계로 사용한다.


3. 코드 포인트(Code Point)

코드 포인트(Code Point)는 각 문자에 부여된 고유한 번호이다.

유니코드는 모든 문자에 고유 식별자를 할당한다.

표기 형식은 다음과 같다.

문자 코드 포인트
A U+0041
a U+0061
U+AC00
U+B098
😀 U+1F600

여기서 U+는 유니코드 번호를 의미하며, 뒤의 값은 16진수로 표현된다.


4. 인코딩(Encoding)과 UTF-8

코드 포인트는 문자 번호일 뿐이며 실제 컴퓨터 메모리에 저장하려면 바이트(Byte) 형태로 변환해야 한다.

이 과정을 인코딩(Encoding)이라고 한다.

대표적인 유니코드 인코딩 방식은 다음과 같다.

인코딩 특징
UTF-8 가장 널리 사용됨
UTF-16 Windows, Java 내부 처리에 사용
UTF-32 모든 문자를 4바이트로 저장

UTF-8의 특징

  • 현재 웹 표준이다.
  • 문자에 따라 1~4바이트를 사용한다.
  • ASCII와 완벽하게 호환된다.
  • 저장 공간 효율이 높다.
  • 대부분의 프로그래밍 언어와 플랫폼에서 기본 지원된다.

예시)

문자 UTF-8 바이트 수
A 1 Byte
7 1 Byte
3 Byte
😀 4 Byte

5. 평면(Plane) 구조

유니코드는 매우 많은 문자를 관리하기 위해 전체 공간을 17개의 평면(Plane)으로 구분한다.

각 평면은 약 65,536개의 문자를 저장할 수 있다.

주요 평면

평면 번호 이름 내용
Plane 0 BMP (Basic Multilingual Plane) 한글, 영어, 한자 등 일반 문자
Plane 1 SMP (Supplementary Multilingual Plane) 이모티콘, 고대 문자
Plane 2 SIP (Supplementary Ideographic Plane) 확장 한자
Plane 14 SSP (Special Purpose Plane) 특수 용도 문자

우리가 일상적으로 사용하는 대부분의 문자는 Plane 0에 존재한다.


6. ZWJ(Zero Width Joiner)

ZWJ는 “눈에 보이지 않는 연결 문자”이다.

여러 문자를 하나의 문자처럼 결합하는 역할을 수행한다.

대표적으로 이모티콘 조합에 사용된다.

예시)

조합 결과
👨 + ZWJ + 💻 👨‍💻
👩 + ZWJ + 🚀 👩‍🚀
👨 + ZWJ + 👩 + ZWJ + 👧 + ZWJ + 👦 👨‍👩‍👧‍👦

ZWJ 덕분에 새로운 이모티콘을 기존 문자 조합만으로 표현할 수 있다.


7. 실무에서 중요한 이유

유니코드는 현대 소프트웨어 개발의 기본 인프라이다.

특히 다음과 같은 분야에서는 필수 요소이다.

  • 웹 서비스 개발
  • 모바일 앱 개발
  • 데이터베이스 설계
  • 인공지능 데이터 전처리
  • 다국어 번역 시스템
  • 글로벌 플랫폼 개발

UTF-8을 기본 문자 인코딩으로 사용하는 것은 현재 대부분의 시스템에서 사실상 표준 관행이다.


핵심 요약

  • 유니코드는 전 세계 모든 문자를 표현하기 위한 국제 표준 문자 체계이다.
  • 코드 포인트는 문자에 부여된 고유 번호이다.
  • 인코딩은 코드 포인트를 실제 바이트로 변환하는 과정이다.
  • UTF-8은 현재 가장 널리 사용되는 유니코드 인코딩 방식이다.
  • 유니코드는 17개의 평면으로 구성된다.
  • ZWJ를 사용하면 여러 문자를 하나의 문자처럼 조합할 수 있다.
  • 현대 소프트웨어 개발과 인공지능 시스템의 기본 문자 체계는 사실상 UTF-8 기반 유니코드이다.

Categories:

Updated:

Leave a comment