유니코드 NFD to NFC 변환
업데이트:
유니코드 NFD 문자열을 NFC 문자열로 변환하는 방법을 Python 스크립트와 nfd2c 툴을 활용하여 설명
NFD와 NFC
유니코드는 다양한 언어와 문자를 표현하기 위한 표준입니다.
동일한 문자라도 NFD와 NFC 라는 두 가지 방식으로 표현될 수 있으며, 서로 호환되지 않아 문제를 일으킬 수 있습니다.macOS가 아닌 다른 OS의 경우 자모음을 분리해서 표현됨
- NFD
(Normalization Form Decomposition)
- 유니코드 문자열을 분해하여 기본 문자와 결합 문자로 표현하는 방식
- 일부 시스템에서 호환성 문제 발생 가능성이 있음
(macOS 등)
- 시각적으로 인지하기 어려움
- 저장 공간을 더 많이 사용함
- NFC
(Normalization Form Canonical Composition)
- 유니코드 문자열을 합성하여 단일 문자로 표현하는 방식
- 대부분의 시스템에서 호환성이 높음
(Windows, Android 등)
- 시각적으로 인지하기 편함
Python Script
unicodedata.normalize
함수를 사용하여 NFD 문자열을 NFC 문자열로 변환
import unicodedata
def nfd_to_nfc(text):
return unicodedata.normalize('NFC', text)
text = "Hello, world!"
nfc_text = nfd_to_nfc(text)
print(nfc_text) # 출력: "Hello, world!"
Python Tool : nfd2c
- 파일이나 디렉토리 이름의 NFD 문자열을 NFC 문자열로 변환하는 데 유용
nfd2c
툴을 통해 파일이나 디렉토리 이름 확인 후,-x
옵션을 통해 rename 실행
$ pip install unicode-nfd2c
$ nfd2c
Converts NFD Unicode filenames to NFC.
USAGE: nfd2c [options] [dir(s)|file(s)]
-x, --execute rename on
-r, --recursive sub-directories on
-d, --dir-only directory only
-f, --file-only file only
-h, --help help
댓글남기기