유니코드 & UTF-8 바이트 정밀 분석기

HOT

텍스트 및 이모지의 글자별 Unicode 코드포인트(U+XXXX), UTF-8 Hex 바이트, 이진수 분석

ADVERTISEMENT · TOP BANNER

Responsive 728x90 / 320x100 Ad Slot

(CLS Prevention Active · Zero Shift)
100% 브라우저 연산 (서버 전송 없음, 개인정보 안전)
Interactive Client Mode
유니코드 & UTF-8 바이트 정밀 분석기
분석할 텍스트 / 이모지 입력글자수: 14 | 총 UTF-8 용량: 24 bytes
글자 선택 (클릭하여 상세 바이트 분석)
H

U+0048

10진수 코드포인트: 72 | UTF-8 바이트 크기: 1 Byte(s)

UTF-8 16진수 바이트
0x48
JS / JSON 탈출 시퀀스
\u0048
HTML 10진수 엔티티
H
UTF-8 이진수 (Binary)
01001000
ADVERTISEMENT · HIGH CTR IN-FEED

Native In-Feed / High Viewability Ad Slot

(CLS Prevention Active · Zero Shift)

유니코드 코드포인트 체계와 UTF-8 가변 길이 인코딩 해부

유니코드 & UTF-8 인스펙터(Unicode & UTF-8 Inspector)는 텍스트에 포함된 개별 문자, 다국어 기호, 합성 문자 및 복합 이모지(Emoji)를 글자 단위로 정밀하게 분해하여 유니코드 코드포인트(Code Point), UTF-8/UTF-16 바이트 시퀀스, 이진수(Binary) 비트열, 그리고 유니코드 표준 속성을 시각화해 주는 첨단 문자 인코딩 분석 도구입니다. 소프트웨어 개발 현장에서 다국어 처리와 텍스트 렌더링은 가장 빈번하게 버그를 야기하는 복병 중 하나입니다. 눈으로 보기에는 분명 한 글자인데 문자열 길이 함수(`str.length`)가 2나 7을 반환하거나, 데이터베이스 저장 시 문자셋(Charset) 불일치로 외계어(모지바케, 믾, 풿 등)로 깨지는 현상은 모두 인코딩의 구조적 이해 부족에서 비롯됩니다.

전 세계 모든 문자를 고유한 정수 번호로 일대일 매핑한 것이 '유니코드(Unicode)'이며, 이 번호를 컴퓨터 메모리나 네트워크 패킷에서 효율적으로 전송하기 위해 가변 길이 바이트(1바이트~4바이트)로 변환하는 규약이 바로 'UTF-8'입니다. 영문 ASCII 문자는 1바이트를 사용하지만, 한글은 3바이트를 차지하며, 피부색이나 성별이 결합된 최신 ZWJ(Zero Width Joiner) 합성 이모지는 수십 바이트에 달하는 유니코드 시퀀스로 구성됩니다. 본 도구는 복잡한 인코딩의 내부 비트 구조를 직관적으로 분해하여 바이트 단위 트러블슈팅을 손쉽게 수행할 수 있도록 돕습니다.

또한 본 도구는 모든 텍스트 분해 및 바이트 계산을 사용자의 로컬 브라우저 자바스크립트 엔진과 Web TextEncoder API를 통해 100% 클라이언트 사이드에서 즉각적으로 연산합니다. 민감한 데이터베이스 쿼리나 비공개 문자열을 분석하더라도 외부 서버로 전송되지 않으므로, 엔터프라이즈 보안 및 개인정보 보호 규정을 완벽하게 만족합니다.

유니코드 코드포인트 매핑 및 UTF-8 가변 길이 인코딩 알고리즘

유니코드 17개 평면(Planes)과 UTF-8의 1~4바이트 비트 패킹 구조를 수학적으로 해부합니다.

UTF-8 바이트 패킹 비트 마스크 공식Mathematical Formulation
UTF-8 Byte Range: 1-Byte (0x00~0x7F), 2-Byte (0xC2~0xDF), 3-Byte (0xE0~0xEF), 4-Byte (0xF0~0xF4)

코드포인트 정수값을 상위 비트 길이에 따라 1~4바이트 UTF-8 헤더 비트 템플릿에 분할 삽입합니다.

한글 음절 '한'(U+D55C)의 UTF-8 3바이트 인코딩 전개
유니코드 식별'한' = U+D55C (10진수 54,620)3바이트 범위(U+0800~U+FFFF)
2진수 비트열D55C = 1101 0101 0101 110016비트 이진 데이터
3바이트 템플릿 패킹1110[1101] 10[010101] 10[011100]11101101 10010101 10011100
16진수 변환ED 95 9C3바이트 Hex 완성

👉 최종 UTF-8 바이트 시퀀스 `0xED 0x95 0x9C`로 메모리에 직렬화됩니다.

  • 코드포인트 체계: 유니코드는 `U+0000`부터 `U+10FFFF`까지 총 1,114,112개의 코드포인트 공간을 17개 평면(BMP, SMP 등)으로 분할 관리합니다.
  • UTF-8 가변 길이 인코딩 규칙: ASCII 영역(U+0000~U+007F)은 1바이트(`0xxxxxxx`), 다국어(U+0800~U+FFFF, 한글 포함)는 3바이트(`1110xxxx 10xxxxxx 10xxxxxx`), 확장 이모지(U+10000~U+10FFFF)는 4바이트(`11110xxx 10xxxxxx 10xxxxxx 10xxxxxx`)로 인코딩됩니다.
  • UTF-16 서러게이트 페어(Surrogate Pair): 자바스크립트 기본 문자열 엔진은 UTF-16을 사용하므로, U+10000 이상의 이모지는 16비트 단위 2개(High Surrogate `0xD800~0xDBFF`, Low Surrogate `0xDC00~0xDFFF`)의 조합으로 메모리에 저장됩니다.
  • 결합 문자 및 ZWJ(Zero Width Joiner, U+200D): 여러 개의 독립적인 유니코드 코드포인트가 ZWJ로 결합되어 브라우저 화면에 하나의 합성 이모지(예: 👨‍👩‍👧‍👦 가족 이모지)로 렌더링되는 시퀀스를 개별 구성 요소로 분리합니다.

문자 범위별 바이트 크기, 유니코드 평면 및 인코딩 비교 기준표

문자 범주 (Category)코드포인트 범위UTF-8 바이트UTF-16 바이트대표 예시주요 용도 및 개발 주의점
기본 ASCII 영문/숫자U+0000 ~ U+007F1 바이트2 바이트A, 9, $, !모든 인코딩 체계와 100% 하위 호환
라틴 확장 / 키릴 / 그리스어U+0080 ~ U+07FF2 바이트2 바이트é, ñ, Ω, Д유럽/슬라브어권 다국어 처리
한글 음절 (Hangul Syllables)U+AC00 ~ U+D7A33 바이트2 바이트가, 한, 글DB varchar(3) 바이트 크기 산정 주의
한자 및 CJK 통합 한자U+4E00 ~ U+9FFF3 바이트2 바이트漢, 字, 中동아시아 공통 한자 처리
기본 이모지 (SMP Plane)U+1F300 ~ U+1F9FF4 바이트4 바이트 (페어)😀, 🚀, 🎉MySQL `utf8mb4` 문자셋 필수 지원
복합 ZWJ 이모지 (합성)가변 (여러 코드포인트)최대 25+ 바이트최대 14+ 바이트👨‍💻, 🏳️‍🌈, 👩‍👩‍👦문자열 자르기(Substring) 시 이모지 깨짐 주의
ADVERTISEMENT · IN-ARTICLE CONTENT

High-Engagement In-Article Native Ad Slot

(CLS Prevention Active · Zero Shift)

사용 방법

11. 텍스트 또는 이모지 입력

분석하고 싶은 한글 문장, 외계어로 깨진 텍스트, 다국어 기호, 또는 복합 이모지를 입력 필드에 입력합니다.

22. 글자 단위 인터랙티브 칩(Chip) 선택

입력창 아래 생성된 문자 칩 리스트에서 특정 글자를 클릭하면, 해당 문자의 내부 구조가 우측 디테일 패널에 실시간으로 전개됩니다.

33. 유니코드 및 바이트 인코딩 스펙 분석

공식 유니코드 코드포인트(`U+XXXX`), UTF-8 16진수 바이트 배열(`0xEA 0xB0...`), UTF-16 서러게이트 페어, 이진수 비트열, 자바스크립트/CSS 탈출 코드를 확인합니다.

44. 인코딩 코드 복사 및 소스코드 적용

[바이트 복사] 또는 [유니코드 복사] 버튼을 눌러 정규화된 이스케이프 시퀀스를 클립보드에 담아 개발 소스코드나 DB 마이그레이션 스크립트에 적용합니다.

실무에서의 유니코드 & UTF-8 인스펙터 활용 사례

데이터베이스 깨짐 디버깅부터 SMS 글자수 산정까지 필수적인 진단 도구입니다.

MySQL 'Incorrect string value' 에러 디버깅

이모지가 포함된 텍스트가 데이터베이스에 들어가지 못하고 에러가 날 때, 4바이트 UTF-8(`utf8mb4`) 문자인지 여부를 즉시 검증합니다.

SMS 80바이트 제한 및 EUC-KR / UTF-8 글자수 산정

문자메시지(SMS/LMS) 발송 시 한글(EUC-KR 2바이트 vs UTF-8 3바이트)과 영문(1바이트)의 정확한 바이트 길이를 계측하여 요금 초과를 방지합니다.

이모지 잘림(Cut-off) 및 물음표(?) 깨짐 방지

합성 이모지(`👨‍👩‍👦`)를 단순 인덱스로 잘랐을 때 깨지는 원인인 ZWJ(U+200D) 연결 구조를 시각적으로 확인하고 인텔리전트 슬라이싱을 구현합니다.

숨겨진 제로 너비 공백(Zero-width Space) 탐지

웹 크롤링 데이터나 복사된 텍스트에 몰래 삽입된 투명 문자(`U+200B`, `U+FEFF` BOM)를 검출하여 파싱 오류를 사전에 제거합니다.

💡 문자 인코딩 전문가 팁 & 트러블슈팅 가이드

✓ MySQL의 utf8mb4 문자셋 강제

MySQL의 레거시 `utf8`은 3바이트까지만 지원하므로 4바이트 이모지 저장 시 런타임 에러가 발생합니다. 반드시 `utf8mb4`를 사용하세요.

✓ 자바스크립트 length 함수의 함정 회피

`"😀".length`는 2를 반환합니다. 정확한 사용자 인식 글자수를 세려면 `Array.from(str).length` 또는 최신 `Intl.Segmenter` API를 사용해야 합니다.

✓ BOM(Byte Order Mark) 유입 차단

윈도우 메모장에서 UTF-8 문서를 저장할 때 맨 앞에 붙는 `0xEF 0xBB 0xBF` 3바이트가 JSON 파서나 컴파일러의 첫 글자 에러를 유발할 수 있습니다.

✓ EUC-KR 및 CP949 바이트 차이 인지

한글 1글자는 EUC-KR에서 2바이트, UTF-8에서는 3바이트를 차지하므로 시스템 간 전송 시 규격을 반드시 통일해야 합니다.

⚠️ 흔히 하는 실수 & 예방법

❌ 이모지 문자열을 단순 substring으로 자르기
✅ 서러게이트 페어가 반쪽으로 쪼개져 물음표나 깨짐 기호가 발생하지 않도록 grapheme cluster 기반으로 자르세요.
❌ 보이지 않는 제로 너비 문자 방치
✅ 비밀번호나 아이디 검증이 실패하지 않도록 `U+200B` 등의 투명 제어 문자를 사전 새니타이징하세요.
❌ 멀티바이트 문자를 URL 쿼리에 미인코딩 전송
✅ 웹 서버에서 400 Bad Request가 발생하지 않도록 UTF-8 바이트 시퀀스를 `%XX` 퍼센트 인코딩하여 전송하세요.
❌ 1글자를 1바이트로 가정한 버퍼 할당
✅ C/Go 등 저수준 프로그래밍에서 버퍼 오버플로우가 발생하지 않도록 최대 4바이트 공간을 계산하세요.

자주 묻는 질문 (FAQ)

사용자 및 전문가들이 가장 자주 묻는 핵심 질문과 명확한 해답입니다.

6 Q&As

한글 음절(가~힣)은 유니코드 U+AC00부터 U+D7A3까지의 영역에 배정되어 있습니다. UTF-8 인코딩 명세상 U+0800부터 U+FFFF 사이의 문자는 3개의 바이트(`1110xxxx 10xxxxxx 10xxxxxx`)를 사용하도록 규정되어 있기 때문입니다.

ADVERTISEMENT · FOOTER BANNER

Wide Responsive Banner

(CLS Prevention Active · Zero Shift)