유니코드 등가성

위키백과, 우리 모두의 백과사전.
Addbot (토론 | 기여)님의 2013년 3월 10일 (일) 16:09 판 (봇: 인터위키 링크 4 개가 위키데이터d:q250798 항목으로 옮겨짐)
유니코드
부호화 형식
UCS
양방향 텍스트
BOM
한중일 통합 한자
유니코드 범위 목록
유니코드 등가성
유니코드와 HTML
유니코드와 전자 우편
유니코드 글꼴
v  d  e  h

유니코드 정규화는 모양이 같은 여러 문자들이 있을 경우 이를 기준에 따라 하나로 통합해 주는 일을 가리킨다. 그 기준으로는 아래 표와 같이 NFD, NFC, NFKD, NFKC가 있다.

제목 묘사
정규화 방식 D (NFD) 정준 분해
정규화 방식 C (NFC) 정준 분해한 뒤에 다시 정준 결합
정규화 방식 KD (NFKD) 호환 분해
정규화 방식 KC (NFKC) 호환 분해한 뒤에 다시 정준 결합

정규화의 예

  • NFD로의 정규화 : 코드를 정준 분해한다.
    • 발음 구별 기호가 붙은 글자가 하나로 처리되어 있을 경우, 이를 기호별로 나누어 처리하기
      • À (U+00C0) → A (U+0041) + ̀ (U+0300)
      • (U+1EC7) → e (U+0065) + ̂ (U+0302) + ̣ (U+0323)
      • (U+304C) → (U+304B) + (U+3099)
      • (U+30DD) → (U+30DB) + (U+309A)
      • Й (U+0419) → И (U+0418) + ̆ (U+0306)
    • 한글을 한글 소리마디 영역(U+AC00~U+D7A3)으로 썼을 경우, 이를 첫가끝 코드로 처리하기
      • (U+C704) → (U+110B) + (U+1171)
      • (U+D55C) → (U+1112) + (U+1161) + (U+11AB)
    • 표준과 다른 조합 순서를 제대로 맞추기
      • e (U+0071) + ̇ (U+0307) + ̣ (U+0323) → e (U+0071) + ̣ (U+0323) + ̇ (U+0307)
  • NFC로의 정규화 : 코드를 정준 분해한 뒤에 다시 정준 결합한다.
    • 발음 구별 기호(조합 분음 기호: U+0300~U+036F)가 잇따라 붙었을 경우, 이를 코드 하나로 처리하기
      • A (U+0041) + ̀ (U+0300) → À (U+00C0)
      • e (U+0065) + ̂ (U+0302) + ̣ (U+0323) → (U+1EC7)
      • (U+304B) + (U+3099) → (U+304C)
      • (U+30DB) + (U+309A) → (U+30DD)
      • И (U+0418) + ̆ (U+0306) → Й (U+0419)
    • 한글을 첫가끝 코드로 썼을 경우, 이를 한글 소리마디 영역(U+AC00~U+D7A3)으로 처리하기
      • (U+110B) + (U+1171) → (U+C704)
      • (U+1112) + (U+1161) + (U+11AB) → (U+D55C)
      • (U+1103) + (U+1172) + (U+11F0) → (U+B4C0) + (U+11F0) - 종성을 뺀 초성과 중성까지만 변환할 수 있는 경우, 알고리듬에 따라 거기까지만 변환한다[1]
  • NFKD로의 정규화 : 코드를 호환 분해한다.
    • 합자 처리된 알파벳 코드를 각 알파벳으로 분해하기
      • (U+FB01) → f (U+0066) + i (U+0069)
    • 옛 알파벳을 현대 알파벳으로 바꾸기
      • ſ (U+017F) → s (U+0073)
      • (U+1E9B) → s (U+0073) + ̇ (U+0307)
  • NFKC로의 정규화 : 코드를 호환 분해한 뒤에 다시 정준 결합한다.
    • 발음 구별 기호가 있는 옛 알파벳을 현대 알파벳으로 바꾸기
      • (U+1E9B) → (U+1E61)
  • 모든 기준에서의 공통된 정규화

주석

  1. “Unicode Standard Annex #15 (Revision 33)”. The Unicode Consortium. if neither case was true, just add the character 

바깥 고리