도구
가이드

16진수 / ASCII / 유니코드

인코딩

텍스트, UTF-8 16진 바이트, 유니코드 코드포인트를 상호 변환합니다.

100% 클라이언트 백엔드 없음
텍스트
16진수 (UTF-8)
코드포인트
이 페이지에서

16진수 / ASCII / 유니코드 변환기란?#

같은 텍스트 조각을 본질적으로 다른 세 가지 방식으로 적을 수 있으며, 이 도구는 세 가지를 한꺼번에 보여줍니다.

  • 텍스트 — 사용자가 타이핑하고 읽는 그대로의 리터럴 문자(Hello 世界 🌍).
  • 16진 바이트 — 16진수로 표현된 원시 UTF-8 바이트 시퀀스, 한 바이트가 한 쌍(48 65 6C 6C 6F 20 ...). 네트워크를 타거나 파일에 앉아 있는 실제 형태입니다.
  • 코드포인트 — 유니코드 스칼라 값, 문자마다 하나의 U+XXXX(U+0048 U+0065 ... U+1F30D). 유니코드 자신이 문자에 번호를 매기는 방식이며, 어떤 바이트 인코딩과도 무관합니다.

이 세 관점이 중요한 이유는 ASCII를 벗어나면 길이가 같지 않기 때문이며, 이것이 텍스트 인코딩 혼란의 가장 큰 원인입니다. 문자 하나는 코드포인트 하나이지만 UTF-8에서 1~4바이트를 차지할 수 있습니다. 지구 이모지 🌍는 단일 문자(U+1F30D)이지만 UTF-8에서는 4바이트(F0 9F 8C 8D)입니다. 문자열 길이를 잘못 세어 본 적이 있거나, 데이터베이스가 문자열을 “너무 길다”며 거절한 것을 본 적이 있거나, 부분문자열 자르기가 문자 중간에 떨어진 것을 본 적이 있다면 이미 이 간극을 만난 것입니다.

세 표현 중 하나를 편집하면 나머지 둘은 즉시 도출됩니다. 파서는 관대합니다. 16진 입력은 공백·콜론·대시·0x 접두어를 받아들이고, 코드포인트 입력은 U+, \u, 0x 또는 빈 16진수를 공백·쉼표·세미콜론 구분으로 받아들입니다.

사용 방법#

  1. 입력 상자 위의 모드 선택기 로 타이핑하는 것이 무엇인지 선언하세요. 텍스트, 16진, 코드포인트 중 하나입니다.
  2. 입력 상자에 붙여넣거나 편집하세요. 오른쪽에 나머지 두 관점이 자동으로 채워집니다.
  3. 세 결과 필드 각각 옆의 복사 로 해당 표현을 가져가세요.
  4. 예제 는 Hello 世界 🌍을 불러와 ASCII, CJK, 이모지가 각각 어떻게 다르게 매핑되는지 보여줍니다. 지우기 는 모두 비웁니다.

주요 기능#

  • 세 관점, 하나의 진실 원천. 가지고 있는 표현을 무엇이든 편집하면 나머지는 계산되며, 손으로 유지보수할 일이 없습니다.
  • Latin-1이 아니라 UTF-8 바이트. 16진 출력은 거의 모든 최신 시스템이 쓰는 실제 전송용 UTF-8 바이트 시퀀스이지, 레거시 일대일 문자-바이트 가정이 아닙니다.
  • 성혜 문자를 포함한 코드포인트 인식. for...of 반복이 의미하는 바는 이모지가 두 서로게이트 절반이 아니라 단일 코드포인트로 센다는 것입니다. 그래서 U+1F30D를 봅니다. 결코 D83C DF0D가 아닙니다.
  • 되돌아올 때 엄격. 올바른 UTF-8을 형성하지 않는 16진 바이트(홀수 길이 문자열이나 매달린 연속 바이트)는 깨진 텍스트로 디코딩되는 대신 명확한 오류로 보고됩니다. 올바른 범위 밖의 코드포인트와 홀로 선 서로게이트(U+D800–U+DFFF)는 거부됩니다.

실전 예시#

예제 를 불러와 Hello 世界 🌍을 얻으면, 세 파생 관점은:

Text:       Hello 世界 🌍
Hex bytes:  48 65 6C 6C 6F 20 E4 B8 96 E7 95 8C 20 F0 9F 8C 8D
Code points: U+0048 U+0065 U+006C U+006C U+006F U+0020 U+4E16 U+754C U+0020 U+1F30D

ASCII 문자 H e l l o는 지루한 부분입니다. 각각 한 바이트, 코드포인트는 U+0048에서 U+006F까지. 흥미로운 부분은 나머지입니다.

  • 世(U+4E16)은 UTF-8 바이트 세 개: E4 B8 96. 界(U+754C)도 세 바이트: E7 95 8C. 한 글자이되 한 바이트가 아닙니다.
  • 🌍(U+1F30D)은 UTF-8 바이트 네 개: F0 9F 8C 8D. 코드포인트가 U+FFFF 위이므로 유니코드의 성혜 평면에 살며 4바이트 UTF-8 시퀀스가 필요합니다. 그러나 여전히 단일 문자이며 코드포인트 목록의 한 항목입니다.

반대 방향으로 실험해 보세요. 모드를 코드포인트 로 바꾸고 U+1F600 U+1F604를 붙여넣으면 텍스트(😄 😄 계열 이모지)와 UTF-8 16진이 모두 나타납니다. 이 왕복이 어떤 바이트가 어떤 문자에 대응하는지 확인하는 정확한 방법입니다.

FAQ#

왜 내 이모지는 16진 바이트 네 개지만 코드포인트는 하나인가요?#

UTF-8이 가변 폭 인코딩이기 때문입니다. U+0080 아래의 코드포인트는 한 바이트에 들어가고, U+0080–U+07FF는 두 바이트, U+0800–U+FFFF는 세 바이트, U+10000 이상(대부분의 이모지, 역사적 문자, 음악 기호)은 네 바이트를 씁니다. 코드포인트가 유니코드의 문자 이름이고, 바이트는 UTF-8이 그것을 저장하는 방식입니다. 같은 문자, 두 개의 다른 숫자.

U+XXXX와 \uXXXX의 차이는?#

같은 코드포인트를 가리키지만 다른 세계에서 옵니다. U+0041은 유니코드 자신의 표기입니다. A는 JavaScript, Java, C 문자열 리터럴에서 쓰는 이스케이프입니다. 주의할 점: \uXXXX는 16진수 네 자리만 담으므로 U+1F30D 같은 성혜 코드포인트를 직접 표현할 수 없습니다. \u를 쓰는 언어는 서로게이트 쌍(🌍)이나 \u{1F30D} 같은 확장 구문이 필요합니다. 이 도구의 코드포인트 입력은 두 형태 모두 받아들입니다.

16진 바이트를 붙여넣었더니 “올바른 UTF-8이 아닙니다” 오류가 났습니다. 무슨 뜻인가요?#

붙여넣은 바이트가 올바른 UTF-8 시퀀스를 형성하지 않는다는 뜻입니다. 가장 흔한 이유는 16진 문자열 길이가 홀수(바이트 반이 빠짐), 선두 바이트가 뒤따르는 바이트가 완성하지 못하는 멀티바이트 시퀀스를 선언한 경우, 또는 데이터가 실제로 UTF-8이 아닌 다른 것(GBK, Shift-JIS, 날것의 Latin-1)으로 인코딩된 경우입니다. 디코더는 엄격 모드를 써서 교체 문자를 조용히 만드는 대신 문제를 보고합니다.

문자열의 “진짜” 문자 수를 세는 데 쓸 수 있나요?#

네. 코드포인트 카운트가 사용자가 떠올릴 카운트이며, 대부분의 UI가 제한해야 할 카운트입니다. Hello 世界 🌍은 UTF-8로 17바이트, JavaScript에서 11개의 UTF-16 코드 유닛(string.length)이지만 코드포인트로는 10문자입니다. 트윗이나 폼 필드의 문자 예산이 필요하다면 바이트도 string.length도 아닌 코드포인트를 세세요.