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 기반 유니코드이다.
Leave a comment