logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

[Swift, MacOS] 맥 한글 파일명이 윈도우에서 자소 분리되는 현상 해결, NFD, NFC

by 엉뚱도마뱀 posted Dec 11, 2018
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

[현상 요약]

애플사의 맥북을 이용해서 회사의 쉐어포인트 사이트를 사용할 수 있습니다. 그런데 쉐어포인트 라이브러리에 "한글.docx" 파일을 업로드 했더니 동료들이 파일명이 이상하게 보인다고 합니다. 실제로 동료 자리에 가서 보면 "ㅎㅏㄴㄱㅡㄹ.docx" 라고 보여집니다. 그런데 맥북에서는 정상적으로 보여집니다.

 

[원인 또는 해결 방법]

이 이슈는 Mac OS 와 Windows 가 서로 다른 Unicode Nomalization Form 을 사용하기 때문입니다.

Mac OS 에서는 NFD(Normalization Form Canonical Decomposition) 방식을 사용하고, Windows 에서는 NFC(Normalization Form Canonical Composition) 방식을 사용합니다. 둘 다 표준이어서 어느 한쪽의 잘못이라고 지목할 수 없는 문제 입니다.

Mac OS 에서는 "한글.docx" 라고 이름을 지으면, 내부적으로 "ㅎㅏㄴㄱㅡㄹ.docx" 로 풀어서 유니코드를 저장해 놓고 이것을 보여줄 때 "한글.docx" 이라고 조합해서 보여줍니다. 반면 Windows 에서는 "한글.docx"이라고 파일명을 지으면 실제로 "한글.docx"으로 조합된 글자의 유니코드를 저장합니다.

한국어 이외에도 라틴어 계열의 언어와 일본어 등에서도 유사한 이슈가 있습니다. 아래 표를 보시면 조금 쉽게 이해하실 수 있습니다.

참고 자료1 : http://unicode.org/reports/tr15

참고 자료 2: https://en.wikipedia.org/wiki/Unicode_equivalence#Example

본 이슈는 사실상 OS 레벨 발생하는 것이어서 SharePoint 서버의 문제는 아닙니다. 실례로 Mac 에서 만들어진 파일을 Windows 로 FTP 나 메일 등을 통해 전달하여 탐색기에서 보면 동일하게 자소가 분리되어 보이는 것을 확인하실 수 있습니다.

Mac OS 에서도, Windows 에서도, 운영체제 사용하고 있는 Unicode Nomalization form 방식을 지정하거나 변경할 수 있는 방법을 제공하지 않습니다. 따라서 공식적인 해결방법이 없다고 말씀 드릴 수 밖에 없습니다.

 

[추가 정보]

공식적인 방법 외에 이 문제를 해결하는 인터넷 사용자들의 Workaround 들이 있어 소개합니다.

본 이슈로 인한 불편을 약간이나마 해소하는데 도움이 될 것으로 기대합니다

- Perl 로 제작된 파일명 변환 스크립트 http://aero2blog.blogspot.kr/2011/07/macos-x.html

- 파이썬으로 제작된 파일명 변환 스크립트 https://pypi.python.org/pypi/nfd2nfc

 

[맥 프로그래밍 시에 한글 파일명 윈도우로 전송 시 처리 방법]

Swift 에서 한글 파일명을 처리할 때 다음과 같이 해주면 윈도우에서도 깨지지 않습니다.

즉 NFD 늘 NFC로 변환하는 방법입니다.

 

            let nfdFileName = "한글.docx"

            let nfcFileName = nfdFileName.precomposedStringWithCanonicalMapping

 

 

TAG •

List of Articles
No. Subject Author Date Views
113 TCP/IP State Transition - TCP 스택 포팅 시 참조 file digipine 2017.11.02 197198
112 언어 IDE 별로 git ignore 파일을 자동으로 만들어 주는 사이트 엉뚱도마뱀 2018.12.17 126209
111 What is Android Repo? and Manual, Download file digipine 2017.11.02 100828
110 [Linux] ubuntu 16.04에 QT Creator 설치하기 digipine 2017.11.02 24892
» [Swift, MacOS] 맥 한글 파일명이 윈도우에서 자소 분리되는 현상 해결, NFD, NFC 엉뚱도마뱀 2018.12.11 20547
108 Linux init.d 에서 등록하기. 부팅 시 자동실행 설정 digipine 2017.11.03 13485
107 FFT (Fast Fourier Transform) 고속 푸리에 변환 예제 소스 digipine 2017.10.29 12843
106 Photoshop CC 2018 한글 영문 변환 언어팩, 포토샵 언어변경 file 엉뚱도마뱀 2018.07.04 8867
105 Phabricator 설치 가이드 우분투 16.04 기준 digipine 2017.11.02 6775
104 ATmega8 MCU 간의 TWI 기능을 이용한 I2C 통신 digipine 2017.11.02 6512
103 WinPCap과 Ethereal, Wireshark 을 이용한 스니핑(Sniffing) digipine 2017.10.29 5821
102 난수발생기 개론 엉뚱도마뱀 2017.11.22 4791
101 공짜 무료 C/C++ 컴파일러들 file digipine 2017.10.28 4675
100 비밀번호 해쉬에 Salt(소금) 첨가하기 file 엉뚱도마뱀 2017.11.23 4673
99 [iOS] Bluetooth로 App을 백그라운드 모드로 실행는 방법 lizard2019 2020.02.11 3958
98 [Linux, OSX] pfctl - Packet FIlter Control 사용법 digipine 2017.11.02 3815
97 OpenAL 사용법 정리 1 digipine 2017.11.01 3735
96 WIN CE, GPS - NMEA protocol - GPS Virtual Driver digipine 2017.10.28 3314
95 Xcode 없이 맥에 '명령어 라인 도구(Command Line Tools)'를 설치하는 방법 엉뚱도마뱀 2018.12.26 3281
94 LibVLC 미디어 재생기 프로그래밍 방법 C++, QT 엉뚱도마뱀 2018.04.20 2927
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6