[macOS 한글 호환성 2편] 한글 깨짐 수정법

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

인코딩이 윈도와 다르다. 맥에서 만든 파일은 윈도에서 자음과 모음이 분리되어 보인다. 많은 사람들이 이를 자소 분리현상이라고 말한다. 또한, 일부 사이트는 한글이 깨지거나, 다운로드한 파일의 이름이 깨지는 경우가 많다.`

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

어쨌든, 이번 글을 통해 두 가지를 다룰 것이다.

  1. 업로드하는 파일의 자소 분리 문제와 해결법
  2. 다운로드하는 파일의 텍스트 깨짐과 해결법

원인

이 현상의 원인은 인코딩이 달라서가 아니다. 윈도우에서 CP949라는 구식 인코딩 방식을 사용하기 때문이다. CP949는 EUC-KR의 확장 버전이라고 볼 수 있다. 이 인코딩 방식은 MS에서 초기 윈도우를 개발할 때, 한글 지원을 위해 만든 인코딩 방식이다. 따라서 현재는 개량된 인코딩이 많이 나와 있으며, 많은 운영체제에서 사용하지 않는 인코딩 방식이다(지원하지 않는다는 의미는 아니다). 요즘은 영어를 제외한 대부분의 문자를 Unicode로 인코딩한다. 영어도 특수한 문자를 표시하기 위해 유니코드로 인코딩하는 경우가 많다.

그럼에도 불구하고 윈도우는 여전히 기본 인코딩 방식이 CP949이다. 그래서 기본 텍스트 편집기로 작성한 파일이나 Visual Studio에서 작성한 코드들이 다른 운영체제에서 보면 깨져서 보인다. 특이하게도 한글 윈도우만 기본 인코딩이 CP949이다. 한글 지원을 위한 인코딩이니... 당연한 결과다. 영문 윈도우는 기본 인코딩이 CP949가 아니다. 영문 윈도우에서 작성한 한글 텍스트 문서들은 다른 운영체제에서도 잘 보인다는 얘기다.
영문 윈도우가 한글을 지원하지 않는 것도 아닌데, 한글 윈도우는 왜 기본 인코딩이 CP949인지 의문이다.

그래서, 일부 웹페이지들이 CP949로 인코딩되어 있다. 이런 사이트는 일부 운영체제에서 글자가 깨져서 보인다. 앞서 언급했듯이, 한글 윈도우만 기본 인코딩이 CP949이기 때문에 다른 언어의 윈도우나 다른 운영체제에서 작성한 웹페이지는 한글이 깨지지 않는다. 가끔은 웹페이지는 잘 보이지만, 파일을 다운로드하면 파일 이름이 깨져있기도 하는데, 이 또한 파일을 전송하는데 인코딩을 제대로 바꾸지 않아서 그렇다.

증상

글자가 깨진다는 것은 아래와 같은 증상을 말한다.

텍스트파일의 내용 중 한글이 보이지 않는다.
간혹 다운로드한 파일의 이름이 위와 같이 깨지기도 한다.

이 증상은 1편의 자소 분리 현상에 비할 수 없이 불편하다. 자소 분리 현상은 파일을 공유하면 다른 사용자가 겪게 되는 문제이면서도 인코딩을 바꾸지 않더라도 읽고 이해할 수는 있다.

하지만 위의 한글 깨짐 현상은 맥의 사용자가 직접 겪을 문제이고, 인코딩을 바꾸지 않는 한, 사용자는 읽고 이해하기 어렵다.

해결법

저 텍스트를 유니코드 인코딩으로 변환하면 된다.

이번에는 iconv명령을 사용한다. iconv -f cp949 -t UTF-8 $f

iconv 설치

iconv는 MacOS에 내장되어 있기 때문에 따로 설치하지 않아도 된다.
하지만 MacOS에 내장된 버전은 2009년에 공개된 버전이고, 충돌 문제가 있는 것 같아 brew에서 설치하는 것을 권한다.

터미널을 열고 brew install libiconv를 입력한다.

iconv는 MacOS에 내장되어 있기 때문에 brew에서 환경변수 PATH를 설정해주지 않는다.
대신 설치가 끝나면 brew에서 설치한 iconv를 환경변수 PATH를 설정하는 방법을 알려준다.

그래서 brew가 알려주는 과정을 따라하지 않으면 터미널에서 iconv를 실행해도 MacOS에 내장된 버전이 실행된다.
위 과정을 따라하지 않더라도 추후 brew에서 설치한 버전을 사용하려면 절대경로를 사용해서 실행해주면 된다.

2022.12.14
Intel 기반 맥의 경우 /usr/local/opt/libiconv/bin/iconv를 사용하면 된다.
Apple Silicon 기반 맥의 경우 /opt/homebrew/opt/libiconv/bin/iconv를 사용하면 된다.

2021.11.17
iconv 설치 과정을 추가하였습니다.
Apple Silicon 기반 맥에서 변환 과정에 문제가 발생하는 것 같아 brew에서 다운로드 한 바이너리를 사용하도록 변경하였습니다.

Automator로 만들기

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

실행 가능한 Workflow 파일 다운로드

깨진 한글 컨텐츠 수정_Apple_Silicon.workflow

깨진 한글 컨텐츠 수정_Intel.workflow

깨진 한글 파일명 수정_Apple_Silicon.workflow

깨진 한글 파일명 수정_Intel.workflow

2021.05.31
iconv가 인코딩을 인식하지 못하는 경우 파일 내용이 사라지는 문제 발생
iconv 변환에 문제가 없는지 확인 후 변환을 시도하도록 변경
변환 결과 알림 추가

2021.11.17
Apple Silicon 기반 맥에서 텍스트가 사라지는 문제가 발생하고 있습니다. 변환 전에 반드시 백업하시길 바랍니다.
이 문제는 Intel 기반 맥에서는 재현되지 않고 있기 때문에 제가 수정할 수 있는 부분이 아닙니다.
혹시 몰라 최신 버전의 iconv를 설치하는 과정도 추가하였으니 참고하시기 바랍니다.

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

  • 시스템 메뉴(애플 로고)
  • 시스템 환경설정(System Preferences)
  • Extentions
  • Finder
  • 방금 만든 Quick Action 선택

Quick Action에 등록된 서비스를 실행하면 아래처럼 파일 내용이 정상이 된다.

2021.05.31 파일 내용이 사라지는 문제 수정
2021.11.17 Apple Silicon 기반 맥에서 발생할 수 있는 문제 공지
2022.12.14 Apple Silicon에서 brew 바이너리들이 설치되는 위치 확인 및 수정

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다