유니코드 정규화기
똑같이 보이는 문자열도 강세가 단일 코드 포인트로 있는지, 글자에 결합 기호가 더해진 형태인지에 따라 서로 다른 바이트 시퀀스로 저장될 수 있습니다. 이 정규화기는 텍스트를 네 가지 유니코드 정규화 형식(NFC, NFD, NFKC, NFKD) 사이에서 변환해, 데이터베이스, 검색 색인, 중복 제거 스크립트, 정규식 매칭에서 문자열이 깔끔하게 비교되도록 합니다.
유니코드 텍스트를 정규화하는 방법
-
1
입력 붙여넣기
문자열을 넣으세요: 강세 글자, CJK 텍스트, 합자, 일관되지 않게 느껴지는 무엇이든.
-
2
형식 선택
NFC(합성, 흔히 쓰는 웹 형식), NFD(분해), NFKC(호환 합성), NFKD(호환 분해) 중에서 고릅니다.
-
3
수치 비교
도구가 전후의 문자 수(코드 포인트 수)와 바이트 길이를 보고해, 형식이 문자열을 줄였는지 늘렸는지 볼 수 있습니다.
-
4
정규화된 출력 복사
결과를 데이터베이스, API 페이로드, 슬러그 생성기, 테스트 픽스처에 사용합니다.
네 가지 형식과 각각을 언제 쓸지
유니코드 정규화는 표준 부속서 UAX #15로 정의됩니다. 네 가지 형식은 두 축으로 갈립니다: 정준 대 호환, 그리고 합성 대 분해.
나란히 보는 참고표
| 형식 | 합성 | 매핑 | 언제 쓰나 |
|---|---|---|---|
| NFC | 합성 | 정준만 | 웹 콘텐츠, 데이터베이스, 파일명의 기본값 |
| NFD | 분해 | 정준만 | 문자별로 강세를 제거하는 텍스트 처리 |
| NFKC | 합성 | 호환 포함 | 검색, 식별자, 스팸 필터, 표시 폴딩 |
| NFKD | 분해 | 호환 포함 | 발음 구별 기호 제거 전의 공격적 정규화 |
정준 형식은 의미를 지킵니다
é를 입력하고 형식을 바꿔 보세요. NFC는 1자, 2바이트로 보고하고(단일 코드 포인트 U+00E9), NFD는 2자, 3바이트로 보고합니다(맨 e 뒤에 결합용 어큐트 악센트 U+0301이 붙은 형태). 둘은 화면에서 똑같아 보이지만 서로 다른 바이트 시퀀스이며, 바로 이 불일치를 정규화가 바로잡습니다. 정준 형식은 바이트만 재배열하므로, 어느 형식이든 é는 언제나 어큐트 악센트가 붙은 e를 뜻합니다.
“호환”이 실제로 바꾸는 것
K 형식(NFKC, NFKD)은 비슷해 보이지만 다른 서식을 지닌 문자도 다시 씁니다. 이는 손실이 있는 변환이라 원본을 되돌릴 수 없습니다. 예를 들어:
fi(U+FB01, 라틴 소문자 합자 fi)는fi(두 글자)가 됩니다①(U+2460, 동그라미 친 숫자 1)은1이 됩니다㌀(U+3300, CJK 정사각형 “apaato”)는アパート가 됩니다- 전각
A(U+FF21)는A가 됩니다
검색과 중복 제거에는 강력하지만 서식에는 파괴적이므로, 시각적 충실도가 중요하지 않을 때만 K 형식을 고르세요.
실용적 규칙
- 사용자 콘텐츠는 NFC로 저장하세요.
- 식별자는 NFC로 비교해, 단일 코드 포인트로 쓴
café와e+ U+0301로 쓴café가 일치하게 하세요.fi와fi, 전각A와A까지 같게 비교하려면, UAX #31의 식별자 규칙처럼 NFKC로 올리세요. - 강세를 뗀 슬러그는 NFD로 정규화한 뒤 결합 기호 블록 U+0300~U+036F를 제거해 만드세요.
자주 묻는 질문
보통 입력이 이미 대상 형식이었다는 뜻입니다. 출처가 섞인 텍스트(Mac 파일명, 복사한 PDF 조각, 오래된 데이터베이스 행)를 붙여 넣으면 문자 수와 바이트 수가 바뀌는 것을 볼 가능성이 훨씬 큽니다.
표시용 URL에는 NFC. 순수 ASCII를 원하는 슬러그에는 NFD로 정규화하고 U+0300~U+036F에 대한 정규식으로 결합 기호를 제거한 다음 소문자로 만드세요. 합자와 동그라미 친 숫자도 폴딩하려면 NFKD가 대안입니다.
정준 형식(NFC, NFD)은 의미를 절대 바꾸지 않고 바이트만 재배열합니다. 호환 형식(NFKC, NFKD)은 의미를 바꿉니다: 합자가 쪼개지고, 전각 글자가 폴딩되고, 위 첨자가 평평해집니다. 그것이 원하는 바일 때만 쓰세요.
정규화는 저희 서버에서 PHP의 Normalizer 클래스로 실행되고 결과는 같은 요청에서 돌아옵니다. 텍스트는 저장되지 않습니다. 저희는 어떤 형식이 적용되었는지 기록하는 익명 이벤트만 남기며, 내용 자체는 절대 남기지 않습니다.
관련 도구
도시 이름 생성기
세계관, 지도, 게임, 이야기, 목업 데이터에 쓸 가상 도시, 마을, 촌락, 수도 이름을 만들고 각 결과에 짧은 메모를 제공합니다.
애너그램 생성기
짧은 단어를 입력하면 중복 순열을 제거하고 표시 개수를 조절해 글자의 고유한 재배열을 확인할 수 있습니다.
스크롤 텍스트 생성기
변경 가능한 속도, 글꼴 크기 및 색상을 사용하여 애니메이션 스크롤 헤드라인을 생성하세요. 브라우저에서 CSS 마퀴 티커나 공지 바를 실시간으로 미리 보세요.
무작위 프랑스 이름 생성기
40개 이름과 40개 성의 고정 목록에서 두 부분으로 된 프랑스 이름 아이디어를 1~50개 만듭니다.
뒤집힌 텍스트 생성기
거울에 비친 글자처럼 보이는 유니코드 글리프로 텍스트를 거꾸로 뒤집어 바이오, 캡션, 눈길을 끄는 소셜 게시물에 활용합니다.
소름 텍스트 생성기
유니코드 결합 기호를 사용해 일반 텍스트를 소름 끼치는 잘고 / 글리치 텍스트로 바꿉니다. 강도 조절 가능. SNS, Discord 및 대부분의 폰트에서 작동합니다.
이 도구는 다른 언어로도 제공됩니다
- Unicode正規化ツール [JA]
- Bộ chuẩn hóa Unicode [VI]
- Normalizator Unicode [PL]
- ตัวปรับข้อความให้เป็นมาตรฐาน Unicode [TH]
- Unicode-normaliseerder [NL]
- Normalizador Unicode [PT]
- Normalizador Unicode [ES]
- Normaliseur Unicode [FR]
- مُطبِّع Unicode [AR]
- Unicode-normaliserare [SV]
- Unicode-Normalisierer [DE]
- Penormal Unicode [ID]
- Unicode Normalizer [EN]
- Normalizzatore Unicode [IT]
- Нормализатор Unicode [RU]
- Unicode Normalleştirici [TR]
- Unicode 规范化工具 [ZH]