![[SB] 24. UTF-8](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255BSB%255D%252024.%2520UTF-8%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3Djjack1&w=2048&q=75)




유니코드(Unicode)란?
유니코드(Unicode)는 전 세계의 모든 문자와 기호를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 국제 표준 문자 집합입니다. 즉, 다양한 언어와 문자 체계를 하나의 통일된 체계로 관리하여, 어떤 플랫폼이나 프로그램, 언어에서도 동일하게 문자를 저장·처리·전송할 수 있도록 만들어졌습니다.
유니코드의 등장 배경
과거에는 영어 기반의 ASCII(아스키) 코드처럼, 언어별로 서로 다른 문자 인코딩 방식이 사용되었습니다. 이로 인해,
- 같은 숫자 값이 서로 다른 문자로 해석되거나,
- 여러 언어를 한 번에 표현하거나 교환하는 데 오류가 발생하는 등
여러 문제가 있었습니다.
이런 문제를 해결하기 위해 모든 문자를 고유한 숫자(코드 포인트)로 매핑하는 유니코드가 등장하게 되었습니다.
유니코드의 구조와 특징
- 코드 포인트(Code Point)
유니코드는 각 문자에 고유한 숫자(코드 포인트)를 부여합니다. 예를 들어, 'A'는 U+0041, '가'는 U+AC00처럼 표기합니다.
- 문자 집합의 통일
한글, 한자, 라틴 문자, 아랍 문자, 이모지 등 전 세계 거의 모든 문자를 하나의 표로 관리합니다.
- 다양한 인코딩 지원
유니코드 자체는 문자와 숫자의 매핑(문자 집합)만 정의하며, 실제 저장 방식(인코딩)은 UTF-8, UTF-16, UTF-32 등 여러 방식이 있습니다.
- 플랫폼/언어 독립적
운영체제, 프로그래밍 언어, 데이터베이스 등 어디서나 동일한 문자 처리가 가능합니다.
UTF-8이란?
UTF-8은 "Unicode Transformation Format - 8 bit"의 약자로, 유니코드(Unicode) 문자를 1~4바이트의 가변 길이로 인코딩하는 문자 인코딩 방식입니다. 오늘날 웹, 운영체제, 데이터베이스 등에서 전 세계적으로 가장 널리 사용되는 문자 인코딩입니다.
MySQL은 UTF-8 = 3바이트까지 처리, UTF-8mb4 = 일반 UTF-8
주요 특징
- 가변 길이 인코딩
- 영어, 숫자 등 ASCII 문자(0~127)는 1바이트
- 유럽, 중동 문자 등은 2바이트
- 한글, 한자 등 아시아권 문자는 3바이트
- 이모지 등 일부 특수문자는 4바이트
각 문자는 1~4바이트로 표현됩니다.
- ASCII와 완벽한 하위 호환성
기존 ASCII로 작성된 파일은 UTF-8에서도 동일하게 해석됩니다.
- 범용성
유니코드의 모든 문자를 표현할 수 있어, 전 세계 어떤 언어도 하나의 인코딩으로 처리할 수 있습니다.
- 효율성
자주 쓰이는 영어 등은 1바이트로, 덜 쓰이는 문자는 더 많은 바이트로 표현해 저장 공간을 절약합니다.
- 자가 동기화(Self-synchronization)
바이트 손실이 발생해도 다음 정상 문자를 쉽게 찾을 수 있도록 설계되어 있습니다
인코딩 방식(동작 원리)
- 1바이트(0xxxxxxx): ASCII 문자(예: A, 0, !)
- 2바이트(110xxxxx 10xxxxxx): 라틴 확장, 기타 유럽 문자 등
- 3바이트(1110xxxx 10xxxxxx 10xxxxxx): 한글, 한자 등
- 4바이트(11110xxx 10xxxxxx 10xxxxxx 10xxxxxx): 이모지, 드물게 쓰이는 문자 등
각 바이트의 상위 비트 패턴으로 문자 경계를 쉽게 구분할 수 있습니다.
스프링에 적용

Share article