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)
}
성공!
그외 참고 링크
9/7 최초 작성.