자소가 분리되는 이유
유니코드에서는 ‘한’을 완성형 글자 하나(NFC)로 쓸 수도 있고, 초성·중성·종성 세 조각(NFD)으로 쓸 수도 있습니다. macOS는 파일 이름을 조각으로 저장하는 경우가 많고, 윈도우와 대부분의 프로그램은 완성형을 기대합니다. 그래서 맥에서 압축하거나 USB, 클라우드로 옮긴 파일 이름이 윈도우에서 ㅎㅏㄴㄱㅡㄹ처럼 보입니다.
글자가 사라진 것은 아닙니다. 조각이 그대로 남아 있으므로 합치기만 하면 원래대로 돌아옵니다. 인코딩이 깨진 것과도 다릅니다. 바이트는 모두 정상적인 UTF-8입니다.
자주 생기는 경우
- 맥에서 만든 압축 파일을 윈도우에서 풀었을 때 파일과 폴더 이름
- 맥 사용자가 메일이나 메신저로 보낸 첨부 파일 이름
- 맥의 PDF나 미리보기에서 복사한 글을 한글(HWP), 워드, 엑셀에 붙여넣었을 때
- 맥에서 만든 CSV나 텍스트 파일: 화면에서는 멀쩡해 보여도 검색, 정렬, 중복 확인이 제대로 되지 않음
Mojibuster로 합치는 방법
- 풀린 파일 이름이나 글을 복사해 위 입력란에 붙여넣습니다. 여러 줄도 한 번에 됩니다.
- Mojibuster가 자소를 완성형으로 합치고, 바뀐 곳이 몇 군데인지 보여 줍니다.
- 복사를 눌러 결과를 가져가 파일 이름을 바꾸거나 문서에 붙여넣습니다.
- CSV, TXT, JSON 파일은 통째로 끌어다 놓으면 내용 전체를 합친 UTF-8 파일로 내려받기할 수 있습니다.
파일 이름을 한꺼번에 바꾸려면
Mojibuster는 브라우저 안에서만 동작하므로 PC에 있는 파일 이름을 직접 바꾸지는 않습니다. 파일이 많다면 윈도우 PowerShell에서 해당 폴더로 이동한 뒤 아래 명령을 실행하면 하위 폴더까지 이름을 완성형으로 바꿉니다. 실행 전에 폴더를 백업해 두세요. PowerShell의 한글 문제는 PowerShell 한글 깨짐에서 더 자세히 다룹니다.
Get-ChildItem -Recurse | Where-Object { $_.Name -ne $_.Name.Normalize() } | Rename-Item -NewName { $_.Name.Normalize() }
다시 생기지 않게 하려면
- 일부 압축 프로그램은 맥에서 만든 압축 파일을 풀 때 파일 이름을 자동으로 합치는 기능을 제공합니다. 압축 프로그램 설정을 확인해 보세요.
- 맥에서 보내는 쪽이라면 파일 이름을 영문과 숫자로 짓거나, 받는 사람에게 이 페이지를 알려 주세요.
- 엑셀이나 데이터베이스에 넣기 전에 텍스트를 완성형(NFC)으로 정리하면 검색과 정렬 문제가 사라집니다. 파이썬에서는
unicodedata.normalize('NFC', 글)을 쓰면 됩니다. pandas 한글 깨짐도 참고하세요.
다른 한글 깨짐과의 차이
ÇѱÛ이나 모지 같은 외계어, ??? 같은 물음표는 자소 분리가 아니라 인코딩 문제입니다. 원인과 해결 방법은 글자 깨짐이란과 EUC-KR을 UTF-8로 변환에서 설명합니다. Mojibuster는 이런 경우도 함께 고칩니다.
자주 묻는 질문
합치면 글자가 바뀌거나 없어지지 않나요?
아니요. 풀린 조각을 하나로 합칠 뿐 내용은 그대로입니다. 이미 완성형인 글자와 영문, 숫자는 건드리지 않습니다.
화면에서는 멀쩡한데 검색이 안 됩니다. 같은 문제인가요?
그럴 가능성이 큽니다. 일부 프로그램은 조각난 한글을 붙여서 보여 주지만 내부적으로는 다른 글자여서 검색, 정렬, 중복 확인에서 다르게 취급합니다. 텍스트를 붙여넣었을 때 바뀐 곳이 표시되면 자소 분리였던 것입니다.
파일이 서버로 업로드되나요?
아니요. 붙여넣은 글과 파일은 모두 브라우저 안에서만 처리되며 기기 밖으로 나가지 않습니다.