유니코드 정규화(Unicode normalization)는 유니코드 문자열을 표준 형식으로 변환하는 과정을 말합니다. 정규화를 통해 서로 다른 유니코드 문자열들이 시각적으로 같은 텍스트를 표현하게 됩니다.
유니코드는 여러 가지 형식으로 텍스트를 표현할 수 있는데, 예를 들어 같은 텍스트를 조합형(한글)으로도, 분리형(ㅎㅏㄴㄱㅡㄹ)으로도 표현할 수 있습니다. 같은 텍스트를 나타내는 문자열이라 하더라도, 그 형식이나 순서가 다르면 눈으로 보기에는 서로 다른 텍스트가 될 수 있습니다.
따라서 유니코드 정규화는 이러한 텍스트 표현 형식들을 하나의 표준 형식으로 통일해, 서로 다른 문자열이 같은 시각적 표현을 갖게 하는 것입니다. 유니코드는 여러 가지 정규화 형식을 제공하며, 대표적으로 NFC(Normalization Form Canonical Composition)와 NFD(Normalization Form Canonical Decomposition)가 있습니다.
기본적으로 macOS에서는 자소 분리를 하는 NFD 형식을, Windows에서는 자소 조합을 하는 NFC 형식을 사용합니다. 이 형식의 차이로 인해 macOS에 있는 파일을 Windows로 복사하거나 이메일로 보내게 되면 한글로 된 파일명이 자소 분리되는 것입니다.
macOS용 반디집에서는 기본적으로 NFC 형식으로 파일명을 처리하고 있기 때문에, 파일을 macOS용 반디집으로 압축해서 Windows에서 압축 해제하면 파일명이 정상적으로(자소 조합된 상태)로 표시됩니다.
반디집이 NFC 파일명을 사용하더라도 macOS가 자체적으로 NFC 형식과 NFD 형식을 모두 지원하기 때문에 대부분의 경우 문제가 생기지 않습니다. 그러나 어느 두 파일명이 눈으로 보기에는 똑같더라도 내부적으로 다른 문자열을 사용하고 있는 경우, 일부 클라우드 동기화 서비스에서는 각 파일명을 서로 다른 것으로 인식하는 문제가 생길 수 있습니다.
macOS용 반디집은 7.20 버전부터 파일을 디스크에 쓸 때 NFD 파일명을 사용하는 기능을 제공합니다.
아래 링크의 도움말에서 이미 생성된 유니코드 파일명의 표현 방식을 바꾸는 방법(NFC↔NFD)을 알아보세요.
한글 파일명에서 자소 분리 문제 예방하기