Unicode normalization

Dongyoon Lee·2020년 9월 6일

https://ko.wikipedia.org/wiki/유니코드_정규화

맥과 윈도가 samba 통해서 마운트 돼 있는데, terminal 에서 ls 하거나 코드에서 파일의 이름을 출력하게 하면 자소가 분리된 상태로 보인다. 하지만, 이걸 Finder.app 로 열어보면 정상적으로 합쳐져서 나온다.

화면에 그릴 때 변환 과정이 있나? 등등 여러 추측을 하다가 , 위 문서를 발견했다.

smb 마운트를 통한 접근에서, 맥은 자소를 분리된 NFD 형태로 변환해서 파일시스템에 마운트했고, 보여줄 땐 NFC 형태로 보여준 것 같다. 윈도에 있는 한글 이름으로 된 파일 뿐 아니라 내 맥에 있는 한글로 된 파일도 마찬가지로 터미널에서는 분리돼 있었다.

뭔가 설정을 잘 하면 터미널에서도 합쳐져 나오게 할 수 있겠는데? 하며 찾아보니 아래와 같은 옵션이 있었다. 실험삼아 Unicode normalization form 부분을 NFC 로 바꿔 줬더니 해결..

여튼 나는 golang 에서 이같은 변환이 필요했다. 이 문서를 찾아서 바로 적용했다.

https://unicode-programming.readthedocs.io/en/latest/normalization/go/

import "golang.org/x/text/unicode/norm"

...

func transformTest(path string) {
   nfc := norm.NFC.String(path)
   fmt.Println("nfc form", nfc)
}

성공!

그외 참고 링크


2020

9/7 최초 작성.

profile
입코딩 용사

0개의 댓글