Unicode 정규화 | NFC·NFD·NFKC·NFKD 비교

인코딩브라우저에서 실행(업로드 없음)

제한된 브라우저 Worker에서 Unicode 텍스트를 NFC, NFD, NFKC, NFKD로 정규화합니다. 코드 포인트와 UTF-8 바이트를 비교하고 호환 정규화 손실, 0폭 문자, 대체 문자를 확인한 뒤 결과를 내보냅니다.

다음에 할 작업

관련 작업 흐름을 이어가거나 이 작업 다음에 자주 사용하는 도구를 열어보세요.

이 도구 사용 방법

원본을 보관하고 대상이 일반 문장, 파일명, 식별자, 서명 값, 외부 형식 계약이 있는 필드 중 무엇인지 먼저 확인합니다.

화면의 UTF-8 바이트·줄 제한 안에서 텍스트를 붙여 넣거나 로컬 텍스트 파일을 선택합니다.

정준 정규화에는 NFC 또는 NFD를 선택하고, 호환 접기가 의도된 경우에만 NFKC 또는 NFKD를 선택합니다.

제한된 Worker를 실행하고 입력·출력 코드 포인트 수, UTF-8 바이트 수, 최대 64개 미리보기를 비교합니다.

호환 변경 경고, 남아 있는 형식 문자, U+FFFD 대체 문자가 표시되면 결과를 더 깊이 검토합니다.

원본과 결과의 정확한 차이를 확인하고 대상 시스템에서 시험한 뒤 검토한 텍스트를 복사하거나 다운로드합니다.

이 도구를 써야 할 때

동등성·조회 오류 진단

겉보기는 같지만 조합형·분해형 코드 포인트 때문에 실패하는 값을 비교하기 전에 완성된 비교 키를 정규화합니다.

운영체제 간 파일명 검토

macOS, Windows, Linux, 압축 파일, 버전 관리 사이에서 파일명이 이동할 때 정규화 상태를 검토합니다.

다국어 데이터 가져오기

정규화 계약이 있는 시스템으로 다국어 레이블을 가져오기 전에 결합 배열과 한글 조합 상태를 확인합니다.

호환성을 고려한 검색 키

제한된 검색 키에서 전각·반각, 합자, 원문자 숫자, 표시형을 접어도 되는지 비교합니다.

보이지 않는 표현 차이 진단

겉보기 같은 값이 테스트, 캐시 키, 경로 조회, 중복 제거에서 실패할 때 코드 포인트와 바이트를 정확히 비교합니다.

흔한 실수

임의의 텍스트에 호환 정규화 적용하기

NFKC와 NFKD는 원문자 숫자, 전각·반각, 합자, 위첨자, 수학 문자를 합칠 수 있습니다. 무손실 정리라고 가정하지 말고 호환 변경 경고를 검토하세요.

깨진 인코딩을 정규화로 복구하려 하기

정규화는 동등한 Unicode 배열을 표준화합니다. 잘못된 문자셋으로 디코딩한 바이트나 U+FFFD 대체 문자에서 원문을 복구하지는 못합니다.

0폭 문자가 사라질 것으로 기대하기

0폭 문자와 다른 형식 문자는 보통 정규화 후에도 남습니다. 숨은 문자가 문제라면 개수 경고와 전용 검사 도구를 사용하세요.

정규화를 보안 필터로 간주하기

정규화된 식별자에도 서로 다른 문자 체계의 유사 문자가 남을 수 있습니다. 정규화는 스푸핑·보안·권한 검사가 아닙니다.

조각을 먼저 정규화한 뒤 이어 붙이기

각각 정규화된 문자열 두 개를 이어 붙이면 경계에서 다시 비정규화 배열이 생길 수 있습니다. 비교나 저장 전에 완성된 값을 정규화하세요.

예시

NFC로 정준 동등 텍스트 조합하기

NFC는 분리된 악센트와 한글 자모를 조합하면서 줄바꿈과 정준 동일성을 유지합니다.

입력
Café
각
출력
Café
각

NFKC 호환 접기 확인하기

NFKC는 수학 문자, 원문자 숫자, 합자, 전각 문자를 접습니다. 화면 경고는 이 변환이 단순한 정준 재배열이 아님을 알려 줍니다.

입력
ℌ ① fi A
출력
H 1 fi A

정준 조합과 호환 접기 처리 계약

NFD는 정준 분해를 수행합니다. NFC는 정준 분해와 결합 문자 순서 정리를 거친 뒤 e+악센트나 한글 자모처럼 조합 가능한 배열을 합칩니다.

NFKD는 호환 분해를 수행하고 NFKC는 그 뒤 정준 조합을 수행합니다. 호환 매핑은 폭, 표시형, 합자, 위첨자, 원문자, 수학 문자 구분을 없앨 수 있습니다.

엔진은 입력과 출력의 NFD를 비교해 정준 동일성을 판정합니다. 변경된 NFKC·NFKD 결과가 정준 동등하지 않으면 호환 접기 경고를 표시합니다.

코드 포인트 검사는 UTF-16 코드 유닛이 아니라 Unicode 스칼라 배열을 순회합니다. 결합 문자, 형식 문자, U+FFFD를 세고 화면 미리보기는 각각 64개로 제한합니다.

정규화는 CR·LF, 일반적인 0폭 형식 문자, 이전 디코딩 손실을 고치지 않습니다. 짝이 없는 UTF-16 서로게이트는 대체되기 전에 거부합니다.

입력·줄·출력·Worker 제한으로 처리량을 제어합니다. 분석에는 숫자 지표, 선택 형식, 진단 여부만 전달되고 텍스트는 브라우저 작업 흐름 안에 남습니다.

자주 묻는 질문

NFC와 NFD는 무엇이 다른가요?

NFC는 정준 분해 후 가능한 문자를 조합하고, NFD는 정준 분해 상태를 유지합니다. 코드 포인트와 바이트 배열은 달라질 수 있지만 둘 다 정준 동일성을 보존합니다.

NFKC와 NFKD는 왜 손실 가능성이 있나요?

NFKC와 NFKD는 호환 분해도 적용합니다. ①과 1, 전각 문자와 ASCII 문자, 합자와 개별 문자, 수학 문자와 일반 문자 같은 구분을 합칠 수 있습니다.

모든 데이터베이스 필드에 NFC를 적용해야 하나요?

NFC는 웹 텍스트 상호 운용에 흔히 사용되지만 올바른 선택은 대상 시스템의 계약에 달려 있습니다. 원본을 보관하고 식별자·서명·프로토콜 필드는 명세 확인 없이 바꾸지 마세요.

정규화하면 0폭 문자가 제거되나요?

아닙니다. 정규화는 U+200B와 대부분의 형식 문자를 제거하지 않습니다. 결과에 남은 개수를 표시하므로 별도로 검사할 수 있습니다.

정규화로 대체 문자나 깨진 글자를 복구할 수 있나요?

아닙니다. U+FFFD 대체 문자는 보통 이전 디코딩 단계에서 정보가 손실됐다는 뜻입니다. 가능하면 원본 바이트를 올바른 문자셋으로 다시 읽어야 합니다.

코드 포인트 미리보기가 64개에서 끝나는 이유는 무엇인가요?

큰 결과가 페이지를 과도하게 늘리지 않도록 미리보기는 최대 64개 코드 포인트만 표시합니다. 전체 결과는 출력, 복사, 다운로드에 그대로 남습니다.

처리 한계와 개인정보 보호 범위는 무엇인가요?

입력은 UTF-8 1,048,576바이트와 200,000줄, 출력은 2,097,152바이트, Worker는 1초로 제한됩니다. 분석에는 개수·선택 형식·경고만 기록되고 원문과 결과 텍스트는 기록되지 않습니다.

이 도구를 검증한 방법

관리 및 검수 검토일

검증 방법: 검토에서는 수정하지 않은 “호환 접기 없이 다국어 조회 키 정규화하기” 샘플을 Unicode 정규화에 불러왔습니다. “원본 표현 보존하기”에서 “모든 경고 조사하기”까지의 흐름을 실행해 화면 또는 다운로드 결과를 예시와 비교했습니다. 별도 조사 항목은 “NFKC를 범용 정리로 사용하기”, “숨은 문자가 제거됐다고 가정하기”였습니다.

기대 결과: NFC 결과는 정준 동등한 “Café / 각”이었고 호환 접기가 없음을 보고했으며, 관계없는 전각 문자나 수학 문자는 서로 다른 값으로 유지했습니다.

공식 출처와 표준

검증한 작업 가이드 열기

관련 작업 가이드

도구를 열기 전에 자주 쓰는 작업 흐름과 예시를 확인하세요.

작업 가이드

원본 파일 바이트에서 깨진 텍스트 복구하기

문자셋 감지는 decoder 후보를 좁힐 뿐 이미 깨진 문자열을 자동 복원하지 않습니다. 원본을 보존하고 잘못된 디코딩 경계를 찾은 뒤 통제된 preview를 비교하고, 알려진 값의 왕복 검증이 끝난 경우에만 한 번 변환합니다.

작업 가이드

데이터 전달용 바이너리-텍스트 인코딩 선택하고 검증하기

API, 데이터베이스 필드, DNS 레이블, 이메일 본문, 설정 파일, 레거시 전송 규칙이 Base32·Base58·Base62·Base85·16진수·엔티티·Punycode·quoted-printable·UTF-16·UUEncode를 요구하지만 변형을 충분히 설명하지 않을 때 사용하는 흐름입니다.

작업 가이드

국제 도메인을 퓨니코드로 변환해 DNS 확인하기

한 곳에서는 국제 도메인이 읽기 쉬운 유니코드로, 다른 곳에서는 xn-- ASCII 라벨로 보일 때 등록 또는 보안 승인과 혼동하지 않고 정확히 비교하는 절차입니다.

작업 가이드

게시·초안 비교 전에 텍스트 측정치를 감사하는 방법

편집자, 연구자, 지원팀, SEO 검토자가 초안의 단어 반복, 목표 구문 과다, 읽기 난이도, 부정적 표현, 다른 버전과의 유사성을 물을 때 사용하는 절차입니다. 분석 전에 단위·언어·정규화·분모·한도·해석을 고정하고 결정론적 근거와 편집 판단을 분리합니다.

작업 가이드

재현 가능한 텍스트 픽스처와 장식 샘플을 안전하게 준비하기

테스트, 목업, 터미널 데모, 문서 예시 또는 실패해도 해가 없는 시각 실험에 생성·재배열 텍스트가 필요할 때 사용하는 절차입니다. 구조 작업과 장식을 구분하고, 원문과 구분자 동작을 보존하며, 모든 seed와 제한을 기록합니다. FIGlet·미러·거꾸로·영어 점자 부분집합·Zalgo가 글꼴·보조 기술·검색·복사 환경을 통과하지 못할 수 있으면 항상 평문 대체 내용을 함께 둡니다.

작업 가이드

시스템 간 텍스트 비교 전에 Unicode 정규화하기

신뢰할 수 있는 Unicode 정규화 작업은 원본 표현을 보존하고 대상 시스템의 계약을 확인한 뒤 정준 정규화와 호환 접기를 구분합니다. 정확한 코드 포인트와 숨은 문자를 검사하고, 완성된 값을 비교한 다음 실제 저장·조회 환경에서 다시 검증합니다.

작업 가이드

Unicode 계산 단위별 텍스트 길이 제한 검증

신뢰할 수 있는 길이 검증은 대상 시스템의 계약에서 시작해 원본 표현을 보존하고, 여러 Unicode 단위를 측정하며, 정규화와 보이지 않는 문자 fixture를 포함하고, 제한값 전후를 실행한 뒤 저장·전송 결과를 다시 읽어 확인합니다.

작업 가이드

제로 폭 문자를 제거하기 전에 위치와 의미 검사하기

화면에는 같은 두 값이 비교, 검색, 줄바꿈, 파싱, 표시에서 다르게 동작할 때 사용하는 절차입니다. 수정 전에 지원 제어 문자를 찾고 일반 숨은 구분자와 문자 결합 및 줄바꿈 제어를 구분하며, 줄바꿈과 정규화 상태를 그대로 둔 채 각 제거가 안전한 이유를 기록합니다.

관련 도구

관리 중인 다른 작업 흐름을 이어서 사용해 보세요

모든 도구 둘러보기