한글 풀어쓰기 :: 대화형 AI - mindscale
Skip to content

한글 풀어쓰기

import unicodedata

NFD(풀어쓰기)

NFD로 정규화하여 풀어쓰기된 상태로 저장한다.

x = unicodedata.normalize('NFD', '한글')

저장된 글자 수가 6글자인 것을 확인할 수 있다.

len(x)
6

저장된 0번째 글자를 확인하면 ㅎ이다.

x[0]
'ᄒ'

NFC (모아쓰기)

NFC로 정규화하면 모아쓰기가 된 상태로 저장된다. 앞서 풀어쓰기한 글자도 다시 NFC로 정규화하면 모아쓰기가 된다.

y = unicodedata.normalize('NFC', x)

0번째 글자가 '한'으로 모아쓰기되어 있다.

y[0]
'한'

한글 자모와 한글 호환 자모

NFD로 저장할 때는 저장되는 한글 자모와 키보드로 입력하는 한글 자모는 겉보기에는 같지만 다른 코드를 가지고 있다. x[0]은 'ㅎ'이지만 키보드로 입력한 'ㅎ'과 비교하면 다르고 나온다.

x[0] == 'ㅎ'
False

x[0]의 글자 코드를 확인하면 16진수로 0x1112이다.

hex(ord(x[0]))
'0x1112'

반면 키보드로 입력한 'ㅎ'은 0x314e이다.

hex(ord('ㅎ'))
'0x314e'