MODOO HUB ← 모두의 툴
Dev · Instrument

유니코드 변환기

텍스트 ↔ U+코드·\uXXXX·HTML엔티티·UTF-8 자유 변환

U+ 코드포인트
Copy
JS \uXXXX
Copy
HTML 엔티티
Copy
UTF-8 Hex
Copy

📖 이모지 하나, 프로그래밍 언어마다 다른 세 가지 이스케이프 표기 가이드 보기

유니코드 변환기란?

텍스트를 U+ 코드포인트, JavaScript \uXXXX 이스케이프, HTML 엔티티, UTF-8 16진수 네 가지 표현으로 상호 변환합니다. 내부적으로 입력 문자열은 [...text] 스프레드 연산자로 분해하는데, 이는 String.length로 인덱싱하는 것과 달리 서로게이트 쌍(surrogate pair)을 하나의 코드포인트로 인식합니다 — 그래서 🎉(U+1F389) 같은 이모지도 두 글자로 쪼개지지 않고 정확히 한 개의 문자로 처리됩니다. U+FFFF 이하 기본 다국어 평면(BMP) 문자는 클래식 \uXXXX 4자리로, 그 이상(대부분의 이모지 등) 문자는 ES6의 \u{코드포인트} 문법으로 표기합니다. UTF-8 Hex는 코드포인트 범위에 따라 1바이트(ASCII)~4바이트(이모지 등)로 길이가 달라지는 가변 길이 인코딩입니다.

자주 묻는 질문

\uXXXX 이스케이프는 어디서, 왜 사용하나요?

JavaScript, JSON, Java, C# 등의 소스코드에서 특수문자나 비ASCII 문자를 안전하게 표현할 때 사용합니다. 단, 클래식 \uXXXX는 4자리 16진수만 지원해 U+0000~U+FFFF(기본 다국어 평면, BMP)까지만 표현할 수 있습니다.

🎉는 U+1F389처럼 5자리인데 4자리 \uXXXX로 어떻게 표현하나요?

BMP를 벗어나는 문자는 ES6의 \u{1F389}처럼 중괄호 코드포인트 이스케이프로 표기합니다(이 도구의 "JS \uXXXX" 출력도 U+FFFF 초과 문자에는 이 형식을 자동으로 사용합니다). 참고로 JSON.stringify()는 다른 방식을 씁니다 — 이모지를 UTF-16 서로게이트 쌍인 \ud83c\udf89 두 조각으로 쪼개 저장합니다(Python은 8자리 \U0001F389 형식을 사용). 세 표기 모두 결국 같은 문자를 가리킵니다.

U+ 코드포인트 표기와 \uXXXX 이스케이프의 차이는 무엇인가요?

U+0041은 유니코드 컨소시엄이 정한 국제 표준 표기법이고, \u0041은 그 값을 프로그래밍 언어 소스코드 안에 실제로 적어 넣는 이스케이프 문법입니다. 값은 같지만 쓰이는 맥락이 다릅니다.

HTML 엔티티는 언제, 왜 필요한가요?

HTML 파서는 <를 태그 시작, &를 엔티티 시작으로 해석하므로 이런 문자를 텍스트에 그대로 쓰면 마크업이 깨집니다. &lt;, &amp;, &quot; 등으로 인코딩해야 브라우저가 문자 그대로 표시합니다.

디코드 입력창에 JSON.stringify가 만드는 \ud83c\udf89 같은 서로게이트 쌍을 넣어도 정상 복원되나요?

네. String.fromCodePoint()로 하이 서로게이트(\ud83c)와 로우 서로게이트(\udf89)를 각각 만들어 이어붙여도 그 결과는 JS 엔진 내부에서 유효한 서로게이트 쌍으로 저장되고, [...문자열] 같은 코드포인트 단위 순회에서 자동으로 하나의 문자(🎉)로 인식됩니다 — 두 조각을 수동으로 합칠 필요가 없습니다.

UTF-8 Hex 출력은 항상 같은 바이트 수인가요?

아닙니다. ASCII 문자는 1바이트(예: A → 41), 한글 완성형 문자는 3바이트(예: 가 → EA B0 80), 이모지 등 확장 평면 문자는 4바이트(예: 🎉 → F0 9F 8E 89)로, 코드포인트 범위에 따라 길이가 달라지는 가변 길이 인코딩입니다.

결과를 복사할 수 있나요?

각 출력 행 옆의 Copy 버튼으로 클립보드에 복사합니다.

한글이나 중국어, 일본어 문자도 정확히 변환되나요?

네. 완성형 한글(U+AC00~U+D7A3), 한자, 가나 모두 정상적으로 코드포인트·이스케이프·엔티티·UTF-8 바이트로 변환됩니다. 예: '가' → U+AC00, \uAC00, &#44032;, UTF-8 EA B0 80.