MyBlogTool

내가 쓰려고 만든 블로그 툴 모음

맥에서 옮긴 한글 파일명이 깨질 때 (원인과 해결)

맥에서 만든 압축 파일을 윈도우에서 풀면 "ㅎㅏㄴㄱㅡㄹ.jpg"처럼 자모가 풀어져 보입니다. 왜 이런 일이 생기고 어떻게 되돌리는지 정리합니다.

왜 맥에서 옮긴 한글 파일명만 깨질까

컴퓨터는 "한"이라는 글자를 두 가지 방식으로 저장할 수 있습니다.

  • NFC(완성형): "한"을 하나의 코드(U+D55C)로 저장. 윈도우, 대부분의 웹 서버, 리눅스가 사용.
  • NFD(조합형): "ㅎ" + "ㅏ" + "ㄴ" 세 개의 자모 코드로 분리해 저장. macOS 파일 시스템이 사용.

화면에는 둘 다 똑같이 "한"으로 보이지만, 내부적으로는 완전히 다른 데이터입니다. 맥에서 만든 파일(NFD)을 NFC만 이해하는 환경으로 옮기면, 자모가 결합되지 않고 "ㅎㅏㄴ"처럼 풀어져 표시되거나 아예 파일을 못 찾는 문제가 생깁니다.

이런 증상이면 파일명 인코딩 문제

  • 맥에서 압축한 zip을 윈도우에서 풀었더니 한글 파일명이 자음·모음으로 분리됨
  • 웹 서버에 업로드한 한글 이름 이미지가 404 (주소는 맞는데 안 열림)
  • Git에서 한글 파일이 수정하지 않았는데 "변경됨"으로 계속 잡히거나, 같은 파일이 중복으로 보임
  • 클라우드 동기화 후 파일명 뒤에 이상한 문자가 붙음

해결 방법

1. 이미 깨진 파일명 복구

깨진 파일명 텍스트를 자소 결합/분리 도구에 붙여 넣고 "결합(NFC)"을 선택하면 완성형 한글로 되돌아옵니다. 이 값으로 실제 파일 이름을 바꿔 저장하세요.

2. 애초에 안 깨지게 예방

  • 파일을 옮기기 전 영문·숫자 파일명으로 변경. 가장 확실한 방법입니다.
  • 맥에서 압축할 때 NFC로 저장하는 도구 사용. 기본 "압축" 대신 "The Unarchiver", "Keka" 같은 앱을 쓰면 압축·해제 시 인코딩을 맞춰 줍니다.
  • 클라우드/서버 업로드 시 정규화 처리. 개발자라면 업로드 파이프라인에서 파일명을 Normalizer::normalize($name, Normalizer::FORM_C)(PHP) 또는 unicodedata.normalize('NFC', name)(Python)로 통일합니다.

자주 묻는 질문

변환했는데도 여전히 깨져 보입니다.

표시하는 프로그램이나 폰트의 문제일 수 있습니다. 변환된 값을 실제 파일명에 적용한 뒤 다른 환경(윈도우 탐색기, 웹 브라우저)에서 다시 확인하세요.

윈도우에서 만든 파일을 맥으로 옮길 때도 문제가 되나요?

맥은 NFC로 들어온 이름도 잘 표시하므로 대개 문제없습니다. 방향이 반대일 때(맥 → 윈도우) 주로 발생합니다.

파일 내용도 손상되나요?

아니요. 파일명(메타데이터)만 영향을 받고 이미지·문서 등 내용물은 그대로입니다.

이 글과 함께 쓰면 좋은 도구

함께 읽으면 좋은 글

← 다른 가이드 보기