유니코드 인코딩/디코딩

텍스트를 다양한 유니코드 형식으로 변환하거나 유니코드를 텍스트로 복원합니다.

유니코드 인코딩
텍스트를 유니코드 이스케이프 시퀀스로 변환
길이: 0 글자코드 포인트: 0크기: 0 바이트

유니코드란 무엇인가요?

유니코드는 모든 문자에 고유한 코드 포인트를 할당하는 범용 문자 인코딩 표준입니다. 이를 통해 컴퓨터는 세계 대부분의 문자 체계에서 텍스트를 일관되게 표현하고 처리할 수 있습니다.

유니코드는 150개 이상의 현대 및 역사적 스크립트와 기호, 이모티콘 및 기타 표기법을 포함하여 140,000개 이상의 문자를 지원합니다. 유니코드 이스케이프 시퀀스는 프로그래밍 언어와 데이터 형식에서 이러한 문자를 표현하는 방법입니다.

유니코드 인코딩/디코딩의 주요 용도

  • 국제화(i18n): 소프트웨어가 모든 언어의 텍스트와 작동할 수 있도록 보장합니다.
  • 데이터 처리: 다양한 프로그래밍 환경에서 특수 문자가 포함된 텍스트 데이터를 처리합니다.
  • 보안: 인젝션 공격을 방지하거나 데이터베이스에 텍스트를 안전하게 저장하기 위해 특수 문자를 인코딩합니다.
  • 디버깅: 텍스트 데이터에서 보이지 않거나 혼란스러운 문자를 식별합니다.

유니코드 작동 원리

유니코드는 각 문자에 고유한 코드 포인트라는 숫자 값을 할당합니다. 이러한 코드 포인트는 일반적으로 'U+'를 접두사로 하는 16진수 형식으로 표현되며, 예를 들어 'A' 문자는 U+0041로 표기됩니다.

유니코드 인코딩 형식:

UTF-8: 가변 길이 인코딩(문자당 1-4바이트). ASCII 문자는 1바이트만 사용하기 때문에 ASCII 텍스트에 효율적입니다.

UTF-16: 문자당 2 또는 4바이트 사용. 많은 프로그래밍 환경(JavaScript, Java, .NET)에서 일반적입니다.

UTF-32: 문자당 고정 4바이트. 처리는 더 단순하지만 저장 공간을 더 많이 사용합니다.

디코딩 과정:

디코딩할 때, 소프트웨어는 인코딩된 바이트를 읽고 해당 유니코드 코드 포인트로 다시 매핑한 다음 적절한 문자를 표시합니다.

유니코드 이스케이프 시퀀스 형식

다양한 프로그래밍 언어는 유니코드 이스케이프 시퀀스에 다른 형식을 사용합니다:

JavaScript: 기본 다국어 평면(BMP) 문자는 \u0041, 그 외는 \u{1F600}

Python: BMP는 \u0041, 그 외는 \U0001F600

C#: BMP는 \u0041, 그 외는 서로게이트 쌍 사용

유니코드 예제 분석

다양한 문자가 유니코드에서 어떻게 표현되는지 살펴보겠습니다:

문자 예제:

H = U+0048
i = U+0069

유니코드 코드 포인트:

U+0048 U+0069

UTF-8 표현(바이트):

48 69

UTF-16 표현(바이트):

00 48 00 69

유니코드 이스케이프 시퀀스:

\u0048\u0069

유니코드 사용 시 흔한 실수

  • 인코딩 형식 혼동: UTF-8, UTF-16, UTF-32를 혼동하거나 인코딩 형식을 명시적으로 지정하지 않음.
  • 바이트 순서 표시(BOM) 문제: 유니코드 텍스트 파일을 처리할 때 BOM을 올바르게 처리하지 않음.
  • 문자열 길이 계산 오류: 하나의 문자가 하나의 코드 단위 또는 하나의 바이트와 동일하다고 가정함.
  • 정규화 문제: 유니코드 텍스트를 정규화하지 않으면 비교 문제가 발생할 수 있음(예: é는 여러 방식으로 표현 가능).
  • 서로게이트 쌍 처리: UTF-16으로 인코딩된 텍스트에서 서로게이트 쌍을 잘못 분할함.