python mac 문자열 깨짐 현상

teal·2023년 10월 17일
0

Python

목록 보기
8/8

파이썬이나 장고 등에서 파일을 입력받다보면 파일명의 자모음이 다 분리되는 현상을 겪어봤을 것이다.

개발하다보면 대체 왜이렇게 괴상하게 문자열이 깨질까 하는 생각이 든다. 콘솔에서만 이렇게 출력되고 실제 웹상에서는 정상적으로 보이게 된다. 그럼 어떤 부분이 문제일까?

이것처럼 같은 문자열이여도 인코딩 방식에 따라서 다른 문자열로 인식된다는게 문제다. 즉 시스템에서 파일명을 검색하는 기능을 넣고싶은데 문자열이라고 검색하면 왼쪽과 같이 깨진 문자열들은 검색이 안되는 문제가 발생하게 된다. 그래서 타이핑했을 때 적히는 오른쪽과 같은 형식으로 바꿔주는 것이 필요하다.

우선 두개가 어떤 형식인지 알아보자. 왼쪽과 같이 자모음이 분리되는 형식은 Normalization Form Canonical Decomposition, Normalize Form D, 즉 NFD라고 부른다. 즉 모든 음절을 정준 분해하여 저장한다는 뜻이다. 그래서 해당 문자열을 백스페이스로 지워보면 음절 하나씩 지워지는 것이 아니라 자음, 모음 하나씩 지워진다.

오른쪽과같이 정상적으로 표현되는 방식은 Normalization Form Canonical Composition, Normalize Form C, 즉 NFC라고 부른다. 음절을 정준 분해하고 다시 결합하여 저장한다는 뜻이다. 그래서 음절을 완성하고 지울때 한 음절씩 지워지게 된다.

우리는 그래서 NFD로 된것을 NFC로 바꾸는 과정이 필요하다. 파이썬에서는 간단하게 unicodedata로 해결가능하다.

profile
고양이를 키우는 백엔드 개발자

0개의 댓글