유니코드 정규화
텍스트를 유니코드 정규화 형식 NFC·NFD·NFKC·NFKD 사이에서 변환 — 악센트를 합치거나 분해하고, fi·① 같은 유사 문자도 평범한 형태로 접습니다.
정준 결합(Canonical compose) — 결합 문자를 단일 문자로 합칩니다. 웹 표준 기본값.
코드 포인트: 0 → 0
UTF-8 바이트: 0 → 0
UTF-16 코드 유닛(.length가 세는 수): 0 → 0
강조 표시: 이 형식이 바꾼 글자입니다.
정규화는 직접 만든 불완전한 유니코드 표가 아니라 브라우저 자체의 String.prototype.normalize를 사용합니다.
유니코드 정규화란
눈에 보이는 같은 텍스트도 서로 다른 코드 포인트 배열로 저장될 수 있습니다. 악센트가 붙은 "é"는 하나의 완성형 문자(U+00E9)일 수도, 기본 문자 "e"와 결합 악센트(U+0065 U+0301)의 조합일 수도 있습니다. 화면에는 똑같아 보이지만 서로 다른 문자열이라 비교·중복 제거·정렬·검색이 어긋납니다. 정규화는 이런 변형을 하나의 표준 배열로 통일해 서로 일치시킵니다. 이 도구는 브라우저 내장 정규화를 적용하고 각 형식의 코드 포인트 수, UTF-16 길이(.length가 세는 수), UTF-8 바이트 크기를 함께 보여 주며 형식마다 바뀐 글자를 강조해, 어떤 형식이 실제로 텍스트를 바꾸는지 한눈에 알 수 있습니다. 글자별로 보기 표는 한 걸음 더 들어가, 어떤 형식이 바꾸는 글자마다(상자를 켜면 모든 글자마다) 한 줄씩 그 코드 포인트와 NFC·NFD·NFKC·NFKD가 각각 무엇으로 바꾸는지 보여 줍니다. 글자는 눈에 보이는 단위로 세므로 결합 기호가 붙은 글자나 한글 음절 하나가 한 줄입니다. 비교의 각 줄에는 복사 버튼이 따로 있고, “예시:” 줄에서 결합 악센트·합자·전각 문자·원 숫자·로마 숫자·맥에서 온 한글을 불러와 형식마다 무엇이 되는지 볼 수 있으며, 링크 복사는 텍스트와 고른 형식을 링크에 담습니다. 링크에 담기에 너무 긴 텍스트는 빼고, 그렇다고 알려 줍니다. “결과의 줄바꿈 문자”는 줄바꿈을 들어온 그대로(기본값) 두거나, 모든 줄바꿈을(CRLF는 하나로 쳐서) LF·CRLF·CR로 바꿔 화면·복사·다운로드에 적용하며, 입력란은 줄바꿈을 모두 똑같이 그리므로 그 아래 줄에 입력에 든 줄바꿈의 종류와 개수를 알려 줍니다.
NFC·NFD·NFKC·NFKD 차이
정준(Canonical) 형식인 NFC와 NFD는 문자의 의미를 그대로 유지합니다. NFC는 결합 문자를 완성형으로 합치고(웹과 대부분의 데이터베이스가 기대하는 형식), NFD는 기본 문자와 결합 문자로 분리합니다. 호환(Compatibility) 형식인 NFKC와 NFKD는 한 걸음 더 나아가 시각적으로 비슷한 유사 문자를 평범한 형태로 접습니다 — "fi" 합자는 "fi", "①"은 "1", "½"은 "1⁄2"이 됩니다. 저장·교환에는 NFC, 발음 구별 기호 제거에는 NFD, 검색 색인이나 유사 문자·스푸핑 점검에는 NFK 계열을 사용하세요. 이미지나 스캔에서 글자를 읽으려면 이미지에서 텍스트 추출(OCR)을 쓰세요.
자주 묻는 질문
NFC와 NFD의 차이는 무엇인가요?
NFC는 결합 문자를 완성형 단일 문자로 합칩니다 — "e"와 결합 악센트가 "é"(코드 포인트 1개)가 됩니다. NFD는 반대로 "é"를 "e"와 결합 악센트로 분리합니다. 둘 다 문자 자체는 그대로 두고 인코딩 방식만 다르며, 웹과 데이터베이스에는 보통 NFC를 사용합니다.
NFKC나 NFKD는 언제 사용하나요?
시각적으로 비슷한 문자를 같은 것으로 취급해야 할 때 사용합니다. NFKC와 NFKD는 합자, 원문자, 전각 문자, 분수를 평범한 형태로 접습니다(fi→fi, ①→1, ½→1⁄2). 검색 색인, 사용자명 중복 검사, 유사 문자·스푸핑 점검에 적합합니다. 다만 이 접기는 비가역적이므로 원문을 그대로 다시 표시해야 하는 텍스트에는 맞지 않습니다.
보기에는 같은데 UTF-8 크기는 왜 달라지나요?
형식마다 같은 글을 다른 코드 포인트로 저장하고, UTF-8은 코드 포인트 하나에 한 바이트에서 네 바이트까지 쓰기 때문입니다. 한글 음절 하나는 NFC에서 코드 포인트 하나, 3바이트지만 NFD에서는 자모 셋, 9바이트라서 한글이라는 두 글자는 한쪽에서 6바이트, 다른 쪽에서 18바이트가 됩니다. 결과 아래의 UTF-8 바이트: 전 → 후와 비교의 각 줄에 적힌 바이트 크기로 확인할 수 있고, 형식마다 바뀐 글자는 강조되며, 글자별로 보기 표는 글자 하나하나가 형식마다 무엇이 되는지 보여 줍니다.
어느 형식이든 복사하고, UTF-16 단위를 세고, 예시를 불러오고, 텍스트를 링크로 보낼 수 있나요?
네. 비교의 각 줄에는 코드 포인트 수, UTF-16 단위 수, UTF-8 바이트 수가 적히고 NFKD 복사처럼 줄마다 복사 버튼이 따로 있어, 메뉴를 바꾸지 않고도 어느 형식이든 가져갈 수 있습니다. 결과 아래 요약에는 .length가 세는 UTF-16 코드 유닛 수가 전과 후로 나옵니다. 예시:에서 결합 악센트·합자·전각 문자·원 숫자·로마 숫자·맥에서 온 한글을 코드 포인트로 만든 글로 불러올 수 있습니다. 링크 복사는 텍스트와 고른 형식을 담고 링크를 열면 그대로 나오며, 링크에 담기에 너무 긴 텍스트는 빼고 그렇다고 알려 주되 정규화 형식은 그대로 담깁니다.
줄바꿈 문자도 바꿀 수 있나요?
네. “결과의 줄바꿈 문자”에서 들어온 그대로(기본값) 두거나, 모든 줄바꿈을(CRLF는 하나로 쳐서) LF(리눅스·macOS), CRLF(윈도우), CR(옛 맥)로 바꿔 화면에 보이고 복사·다운로드되는 결과에 적용할 수 있습니다. 입력란은 어떤 줄바꿈이든 똑같이 그리므로, 그 아래 줄에 입력에 든 줄바꿈의 종류와 개수를 알려 줍니다.