맥에서 만든 한글 파일명으로 된 파일을 윈도우에 복사해서 보면 자소가 분리돼 보입니다. 아래와 같은 식이죠.
- 맥에서 파일명: 파일명.jpg
- 윈도우에서: ㅍㅏㅇㅣㄹㅁㅕㅇ.jpg
한글을 구성하는 방식 때문인데요. 윈도우는 NFC라는 방식을 사용하고, 맥은 NFD라는 방식을 사용합니다. NFC는 글자 단위로, NFD는 자소 단위로 저장을 하는 것이죠.
문제는 NFC로 저장된 한글은 맥에서도 잘 보이는데, 맥에서 NFD로 저장된 한글은 윈도우에서 제대로 보이지 않는다는 것인데요.
그래서 PHP에서 파일명을 저장하거나, 파일명을 내보낼 때 NFC로 변환 처리를 하는 것이 좋습니다.
다행히 PHP에는 간단한 방법이 마련돼 있습니다. 아래 코드를 사용하면 됩니다.
Normalizer::normalize($filename, Normalizer::NFC);
Normalizer
는 PHP 5.3부터 있던 클래스로 유니코드 문자의 정규화를 지원합니다.
댓글 남기기