유니코드-UTF-8 변환기

문자 그대로의 유니코드 텍스트를 프로그래밍 언어가 소스 코드에 넣는 \u00E9, \u{1F600} 이스케이프 구문으로 바꾸거나, 이스케이프된 문자열을 붙여 넣어 원본 문자로 디코딩하세요. BMP 문자(4자리 이스케이프)와 이모지 같은 보충 평면(가변 길이 \u{...}) 모두에 작동합니다.

유니코드와 UTF-8 이스케이프 사이를 변환하는 방법

  1. 1

    방향 선택

    문자를 `\u` 이스케이프로 인코딩하거나, 이스케이프된 문자열을 텍스트로 디코딩합니다.

  2. 2

    입력 붙여넣기

    인코딩에는 평문 텍스트, 디코딩에는 `\uXXXX`나 `\u{XXXXX}` 시퀀스가 있는 문자열.

  3. 3

    출력 읽기

    BMP 문자는 `\u0041` 스타일 4자리 이스케이프를 만들고, U+FFFF를 넘는 문자는 ES6 `\u{...}` 형식을 씁니다.

  4. 4

    코드에 복사

    결과를 JavaScript 문자열, JSON 리터럴, 설정 파일, 테스트 픽스처에 넣습니다.

언어별 이스케이프 구문

언어마다 같은 개념을 다르게 표기합니다. 변환기는 흔한 JavaScript/JSON 형식을 출력하지만, 같은 문자를 다른 곳에 쓸 때 무엇으로 옮길지는 아래와 같습니다.

언어별 이스케이프 구문

언어 BMP (<= U+FFFF) 보충 (> U+FFFF)
JavaScript \u00E9 \u{1F600} (ES6+)
JSON \u00E9 서로게이트 쌍 \uD83D\uDE00
Python \u00e9 \U0001F600
Java \u00e9 서로게이트 쌍
C / C++ \u00e9 \U0001F600
Ruby \u00e9 \u{1F600}
Rust \u{00e9} \u{1F600}
HTML 엔티티 &#xE9; &#x1F600;
CSS \0000e9 \1F600

이모지에 긴 형식이 필요한 이유

기본 다국어 평면(BMP)은 U+0000부터 U+FFFF를 다루며, 모든 것이 단일 16비트 단위에 들어갑니다. 이것이 옛 \uXXXX 구문이 설계된 대상입니다. 이모지는 대부분 평면 1(U+1F000 이상)에 있어 4자리 16진수에 들어갈 수 없습니다. 두 가지 선택지:

  1. ES6 중괄호, \u{1F600}은 어떤 길이든 받아들입니다.
  2. UTF-16 서로게이트 쌍, 문자 하나에 \uXXXX 이스케이프 두 개. JSON 파서가 이를 받아들이며, JSON 인코더가 보통 내보내는 것입니다.

둘 다 같은 문자열로 디코딩되지만, 서로게이트 쌍은 취약합니다: 상위와 하위 서로게이트 사이에서 문자열을 자르면 유효하지 않은 UTF-16이 됩니다.

자주 묻는 질문

16진수 4자리는 U+FFFF에서 최대입니다. 이모지는 U+1F000에서 시작하므로 ES6 중괄호 형식 \u{...}이 필요합니다. 구형 대상에 묶여 있다면 UTF-16 서로게이트 쌍을 씁니다. 이 도구는 U+FFFF를 넘는 것에 중괄호를 사용합니다.

쌍으로는 안 됩니다. 디코더는 중괄호 형식 \u{1F600}과 4자리 \uXXXX 이스케이프를 이해하지만, UTF-16 서로게이트 쌍(JSON이 쓰는 두-이스케이프 형식)을 하나의 이모지로 다시 합치지는 않습니다. 각 반쪽은 따로 디코딩되어 복원되지 않습니다. U+FFFF를 넘는 것은 중괄호 형식 \u{...}을 붙여 넣으세요. 이것이 바로 인코더가 내보내는 형식입니다.

아니요. \u00E9 같은 이스케이프는 UTF-8 바이트 시퀀스(C3 A9이 됨)가 아니라 코드 포인트 U+00E9를 나타냅니다. 원시 바이트 보기는 UTF-8 바이트를 HEX로 보여주는 Unicode Lookup 도구를 사용하세요.

변환은 이 요청 내에서 서버 측으로 일어나지만 아무것도 보관되지 않습니다. 변환하는 문자열에 대한 로깅도, 저장도 없습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다