[macOS 텍스트 인코딩 호환성 1편] 파일의 자소분리 해결법

 

맥을 사용하면서 자주 접하게 될 한글 인코딩 호환성 문제

macOS에서 사용하는 한글 인코딩은 Windows와 다르다. 맥에서 만든 파일은 윈도우에서 자음과 모음이 분리되어 보인다. 많은 사람들이 이를 자소 분리현상이라고 말한다. 또한, 일부 사이트는 한글이 깨지거나, 다운로드한 파일의 이름이 깨지는 경우가 많다. 이 또한 인코딩이 달라서 생기는 문제이다.
이번 글에서 다룰 것은 아니지만, 이 현상은 iOS에서도 나타나는 현상이다. 하지만 지금까지 iOS 사용자들은 이런 불편함을 느끼지 못했다. 파일 공유가 어려워서, 다운로드한 파일을 수정하는 경우는 많지만, iOS 장치에서 파일을 생성하여 공유하는 경우는 거의 없었다. 또한, 주요 클라우드 서비스는 파일을 업로드하면 자소 분리를 해결해주기 때문에 한글 인코딩 문제가 크게 다가오지 않았다. 그런데, 앞으로는 iOS 사용자들도 자주 겪게 될 것이다. 9월 중 정식 공개될 iOS 13에서는 Files 앱을 통해 파일 관리를 쉽게 할 수 있다. 문제는 맥과 같은 인코딩을 사용하기 때문에 베타 사용자들 입장에서는 iOS 13에서 한글 처리에 문제가 생긴 것으로 느끼기도 할 수 있다는 것이다.
어쨌든, 이번 글을 통해 두 가지를 다룰 것이다.

원인

맥과 윈도우는 인코딩 방식이 다르다.
윈도우는 NFC(Normalization Form Canonical Composition) 방식을, 맥은 NFD(Normalization Form Canonical Decomposition) 방식을 사용한다. 한국어로는 보통 완성형, 조합형이라고 말한다.
조합형은 '콜'을 저장할 때, 'ㅋ'+'ㅗ'+'ㄹ'로 저장한다
이라고 하면 실제 저장 내용은 111213으로 저장된다
'ㅋ','ㅗ','ㄹ'을 입력하는 동안 코드는 11, 1112, 111213으로 바뀐다.
윈도우는 '콜'이라는 문자에 다른 코드를 할당한다.
이라고 하면 실제 저장 내용은 222355가 된다.
'ㅋ','ㅗ','ㄹ'을 입력하는 동안 코드는 11,2032,222355로 바뀐다.
위는 예시일 뿐이며, 실제로는 완성형 중에도 여러 가지, 조합형 중에도 여러 가지 인코딩 방법이 존재한다.

증상

두 가지 모두 표준 정규화 인코딩 방식이다. 맥은 윈도우에서 만든 파일을 제대로 처리할 수 있으니, 맥은 두 가지 표준을 모두 지원하는 셈이다. 윈도우는 조합형으로 인코딩 된 파일을 제대로 표시할 수 없으니 호환성이 떨어진다고 볼 수 있다.
그러나 일반적인 사용자 입장에서는 유니코드나 인코딩 표준에 대해서 알 겨를이 없으니 맥의 문제라고 착각하기 쉽다. 개인적으로는 현실에서 꽤 많은 사용자가 맥의 문제라고 인식하는 것 같다. 윈도우가 제대로 출력하지 못하는 것인데도 불구하고...
notion imagenotion image
출처 : clien.net

해결법

하지만 점유율 부분에서 이런 문제를 신경 써야 하는 쪽은 맥 사용자다. 다행히도 맥에서는 완성형으로 인코딩 된 파일을 표시할 수 있다. 그래서 파일 명을 완성형으로 인코딩하면 된다.

convmv 설치

우선 convmv를 설치해야 한다. convmv는 CONVerts filenames from one encoding to another and MoVe라는 뜻으로, 인코딩을 바꾸는 툴이다. mv는 파일을 이동하는 명령인데, 이름을 바꾸는 데에도 사용한다. 그러므로 인코딩을 바꾸는 툴이라고 봐도 된다.
터미널을 열고 brew install convmv 를 입력한다. brew가 설치되어 있지 않다면 brew를 먼저 설치해야 한다. brew는 리눅스용으로 컴파일된 프로그램을 실행할 수 있게 해주는 환경을 만들어준다.

convmv 사용법

convmv -f utf8 -t utf8 --nfc --notest <filename>
텍스트 인코딩을 utf8에서 utf8로 바꾸는데, nfc 정규화 방식을 사용한다는 의미이다.
자세한 내용은 man convmv를 참고하면 된다.

Automator로 만들기

기존의 터미널은 파일을 직접 입력해야 한다. 하지만 오토메이터를 사용하면 Finder에서 파일을 선택하여 바로 실행할 수 있고, 또한 여러 파일을 자동화할 수도 있다.

실행 가능한 Workflow 파일 만들기

    • 오토메이터 실행
    • 새로 만들기
    • Quick Action 선택
    • 왼쪽 사이드바에서 Run Shell Script를 선택하고, 오른쪽으로 끌어온다.
    • 오른쪽 패널을 이미지와 같이 바꾸고 입력한다.
notion imagenotion image
    • for i in "$@"; do /usr/local/bin/convmv -f utf-8 -t utf-8 --nfc --notest "$i" done
    • 파일을 ~/Library/Services에 저장한다.

Finder에서 사용할 수 있게 등록하기

  • 시스템 메뉴(애플 로고)
  • 시스템 환경설정(System Preferences)
  • Extentions
  • Finder
  • 방금 만든 Quick Action 선택
notion imagenotion image
이젠 아래 이미지처럼 사용하면 된다.
notion imagenotion image