한국어

유니코드 변환기 — 텍스트를 U+ 코드, 유니코드 이스케이프, UTF-8 바이트로 변환

텍스트와 유니코드 코드·이스케이프·UTF-8 바이트를 서로 변환

브라우저에서 처리 · 서버로 전송되지 않음

보이는 글자 6개 · 코드 포인트 6개 · UTF-16 길이 7

변환 결과

코드 포인트 (U+XXXX)

U+D55C U+AE00 U+0020 U+0041 U+0020 U+1F600

JavaScript·JSON (\uXXXX)

\uD55C\uAE00 A \uD83D\uDE00

ES6 (\u{...})

\u{D55C}\u{AE00} A \u{1F600}

HTML 16진수 (&#x...;)

한글 A 😀

HTML 10진수 (&#...;)

한글 A 😀

UTF-8 바이트 (hex)

ED 95 9C EA B8 80 20 41 20 F0 9F 98 80

UTF-16BE 바이트 (hex)

D5 5C AE 00 00 20 00 41 00 20 D8 3D DE 00

인코딩별 바이트 수

UTF-8
13바이트
UTF-16
14바이트
EUC-KR (CP949)
7바이트
EUC-KR로 표현 불가 1자 (바이트 수에서 제외)

한글 완성형 2,350자는 KS X 1001(EUC-KR)에 있고, 나머지 현대 한글 8,822자는 CP949(UHC) 확장 영역에 있어서 모두 2바이트예요. UTF-8은 한글 한 글자가 3바이트, 이모지는 4바이트예요.

글자별 코드표

글자코드 포인트UTF-8UTF-1610진수보이는 글자
한U+D55CED 95 9CD55C546201
글U+AE00EA B8 80AE00445442
(보이지 않음)U+0020200020323
AU+0041410041654
(보이지 않음)U+0020200020325
😀U+1F600F0 9F 98 80D83D DE001285126

소개

유니코드 변환기는 글자를 컴퓨터가 쓰는 여러 가지 코드 표기로 바꾸고, 반대로 코드를 다시 글자로 되돌리는 도구예요. 글자를 입력하면 U+D55C 같은 코드 포인트 목록, JavaScript·JSON에서 쓰는 \uD55C 이스케이프, ES6의 \u{D55C}, HTML 문자 참조 한와 한, UTF-8과 UTF-16BE 바이트를 한꺼번에 보여 주고 각각 복사할 수 있어요. 소스 코드에 한글을 안전하게 넣어야 할 때, 로그에 찍힌 \uXXXX를 읽어야 할 때, 글자가 깨지는 원인을 찾을 때 쓰기 좋아요.

같은 글자라도 인코딩마다 차지하는 바이트가 달라요. 그래서 UTF-8, UTF-16, EUC-KR(CP949) 바이트 수를 나란히 비교해 주고, 글자마다 코드 포인트와 바이트를 표로 보여 줘요. 화면에 보이는 글자 수, 코드 포인트 수, UTF-16 길이가 서로 다를 때는 그 이유도 알려 줘요. 모든 처리는 브라우저 안에서만 이루어지고 아무것도 저장하지 않아요.

사용법

  1. 변환 방향에서 텍스트 → 코드 또는 코드 → 텍스트를 골라요.
  2. 텍스트 → 코드에서는 변환할 텍스트 칸에 글자를 적어요. 처음에는 예시 ’한글 A 😀’가 들어 있어서 결과가 바로 보여요.
  3. ’ASCII는 그대로’가 켜져 있으면 영문, 숫자, 기호는 이스케이프하지 않고 그대로 둬요. 모든 글자를 코드로 바꾸려면 꺼요.
  4. 원하는 형식 옆의 복사 버튼을 눌러 결과를 옮겨요. 아래에서 인코딩별 바이트 수와 글자별 코드표를 확인할 수 있어요.
  5. 코드 → 텍스트에서는 입력 형식을 골라요. 자동 인식은 \uXXXX, \u{...}, U+XXXX, &#x...;, &#...;를 섞어 써도 찾아서 바꿔요. 16진수 바이트 목록이라면 UTF-8 바이트(hex)나 UTF-16BE 바이트(hex)를 골라요.
  6. 변환된 텍스트 옆의 복사 버튼으로 결과를 복사해요.

기준

  • 코드 포인트: 글자마다 U+ 뒤에 16진수 대문자로 적고, 4자리보다 짧으면 앞에 0을 채워요(A는 U+0041). 공백으로 구분해요.
  • JavaScript·JSON: UTF-16 코드 단위마다 \uXXXX 하나를 써요. U+10000 이상의 글자는 서로게이트 쌍 두 개가 돼요. ES6 형식은 코드 포인트마다 \u{...} 하나예요.
  • HTML: 코드 포인트마다 &#x16진수; 또는 &#10진수;를 써요.
  • ASCII는 그대로: 켜져 있으면 U+0020~U+007E의 출력 가능한 ASCII는 그대로 두되, 되돌릴 때 헷갈리지 않도록 JavaScript 형식에서는 역슬래시를, HTML 형식에서는 & < > “ ’를 코드로 바꿔요. 줄바꿈과 탭은 항상 코드로 바꿔요.
  • UTF-8: 브라우저의 TextEncoder로 바이트를 구해요. 한글 한 글자는 3바이트, 이모지는 4바이트예요.
  • UTF-16: 코드 단위마다 2바이트를 큰 자리부터(빅 엔디언) 적어요.
  • EUC-KR(CP949): 브라우저의 EUC-KR 디코더로 2바이트 조합(첫 바이트 0x810xFE, 둘째 바이트 0x410xFE)을 모두 풀어 거꾸로 찾는 표를 만들어요. ASCII는 1바이트예요. 한글 완성형 2,350자는 KS X 1001에 있고, 나머지 현대 한글 8,822자는 CP949(UHC) 확장 영역에 있어서 ’가’부터 ’힣’까지 11,172자 모두 2바이트예요. 디코더가 KS X 1001만 아는 환경에서는 CP949 확장 영역의 배치 규칙대로 나머지 음절을 채워요.
  • 글자 수: 보이는 글자는 브라우저의 Intl.Segmenter가 나눈 그래핌(유니코드 표준 부속서 29) 기준이에요. 코드표는 코드 포인트마다 한 줄이고, 여러 코드 포인트가 한 글자를 이루면 몇 번째 글자의 몇 개 묶음인지 표시해요. 표는 처음 200개 코드 포인트까지만 보여 줘요.
  • 코드 → 텍스트: U+ 값은 16진수 4~8자리를 읽고, U+ 값 사이의 공백·쉼표는 구분자로 지워요. U+10FFFF보다 큰 값이나 짝이 없는 서로게이트는 몇 번째 글자에서 문제가 생겼는지 알려 줘요. 바이트 입력은 공백, 쉼표, 콜론, 하이픈과 0x, \x, % 접두어를 무시하고, UTF-8 규칙에 맞지 않으면 몇 번째 바이트인지 알려 줘요.
  • 입력은 20,000자까지 변환할 수 있어요.

예시

글자 코드 포인트 JavaScript UTF-8 바이트 UTF-8 / UTF-16 / EUC-KR
A U+0041 A (ASCII 그대로를 끄면 \u0041) 41 1 / 2 / 1바이트
한 U+D55C \uD55C ED 95 9C 3 / 2 / 2바이트
똠 U+B620 \uB620 EB 98 A0 3 / 2 / 2바이트 (CP949 확장, 8C 63)
中 U+4E2D \u4E2D E4 B8 AD 3 / 2 / 2바이트
é U+00E9 \u00E9 C3 A9 2 / 2 / 표현 불가
😀 U+1F600 \uD83D\uDE00 F0 9F 98 80 4 / 4 / 표현 불가

예시 문장 ’한글 A 😀’는 보이는 글자 6개, 코드 포인트 6개, UTF-16 길이 7이고 UTF-8 13바이트, UTF-16 14바이트, EUC-KR 7바이트(이모지 1자는 표현 불가)예요. 가족 이모지는 👨, 👩, 👧 사이에 결합 문자 ZWJ(U+200D)가 두 개 들어가서 보이는 글자는 1개지만 코드 포인트는 5개, UTF-16 길이는 8, UTF-8은 18바이트예요. 자모가 분리된 ’한글’은 U+1112 U+1161 U+11AB U+1100 U+1173 U+11AF로 코드 포인트 6개가 나와요.

거꾸로 자동 인식에 \uD55C\uAE00 &#x1F600; U+0041을 넣으면 ’한글 😀 A’가 되고, UTF-8 바이트(hex)에 ED 95 9C EA B8 80을 넣으면 ’한글’이 돼요.

참고할 점

주소창에 쓰는 %ED%95%9C 같은 퍼센트 인코딩이 필요하면 URL 인코더·디코더를, &amp;처럼 이름이 있는 HTML 엔티티까지 다루려면 HTML 엔티티 변환기를 함께 쓰세요. 눈에 보이지 않는 공백이나 ZWJ 같은 문자를 찾아 지우고 싶다면 빈 글자(투명 문자) 복사 도구가 더 알맞아요.

자주 묻는 질문

코드 포인트와 인코딩은 무엇이 다른가요?

코드 포인트는 유니코드가 글자마다 붙인 번호예요. '한'은 U+D55C예요. 인코딩은 그 번호를 파일이나 네트워크에 저장할 때 바이트로 바꾸는 방법이라서, 같은 '한'이 UTF-8에서는 ED 95 9C 세 바이트, UTF-16에서는 D5 5C 두 바이트, EUC-KR에서는 C7 D1 두 바이트가 돼요.

이모지는 왜 \uXXXX가 두 개로 나오나요?

JavaScript와 JSON 문자열은 UTF-16 단위로 글자를 다뤄요. U+FFFF보다 큰 글자는 UTF-16에서 서로게이트 쌍이라는 두 단위로 나뉘기 때문에 😀(U+1F600)는 \uD83D\uDE00이 돼요. ES6 형식인 \u{1F600}은 코드 포인트를 그대로 적는 방식이라 하나로 끝나요.

같은 한글인데 코드 포인트 수가 더 많이 나와요.

맥의 파일 이름이나 일부 문서에서 복사한 한글은 자모가 분리된 형태(NFD)로 저장되어 있을 수 있어요. 이때 '한'은 초성 ㅎ, 중성 ㅏ, 종성 ㄴ에 해당하는 U+1112, U+1161, U+11AB 세 코드 포인트로 이루어져서 '한글' 두 글자가 코드 포인트 6개, UTF-8 18바이트로 나와요. 화면에는 똑같이 보여도 검색이나 비교가 어긋나는 원인이 돼요.

EUC-KR로 표현 불가는 무슨 뜻인가요?

EUC-KR(CP949)은 한글, 한자, 일부 기호만 담은 옛 한국어 인코딩이라 이모지나 é 같은 글자가 없어요. 그런 글자는 바이트 수에 넣지 않고 따로 개수만 보여 줘요. 브라우저가 EUC-KR 디코더를 지원하지 않으면 이 항목은 나타나지 않아요.

입력한 내용이 서버로 전송되나요?

아니요. 모든 변환은 브라우저 안에서 이루어지고 입력한 글이나 코드는 저장하거나 보내지 않아요.

필요한 도구가 있나요?