눈에는 같아 보이는 한글이 문자열 비교에서 다르다고 나올 때가 있습니다. 유니코드 정규화의 차이 때문입니다.
NFC vs NFD
NFC(Composed): 가는 하나의 코드포인트. NFD(Decomposed): 가는 ㄱ + ㅏ 두 개 코드포인트. 둘 다 가로 보이지만 바이트가 다릅니다.
문제 상황
Mac에서 만든 파일명(NFD)이 Windows(NFC)에서 깨져 보이거나, 검색이 안 될 수 있습니다. 텍스트 변환기로 정규화 형식을 통일하세요.
프로그래밍 처리
JavaScript: str.normalize("NFC"). Python: unicodedata.normalize("NFC", str). 비교 전에 정규화하면 문제를 피할 수 있습니다.
실무 팁
데이터베이스에 저장하기 전, 파일명 처리 시 NFC로 정규화하는 것을 권장합니다.
프로그래밍과 텍스트 변환
프로그래밍에서 문자열 처리는 가장 기본적이면서도 중요한 영역입니다. 사용자 입력을 받아 처리하거나, 외부 API와 통신하거나, 데이터베이스에 저장할 때 항상 텍스트 변환이 필요합니다. 잘못된 처리는 보안 취약점이나 버그로 이어질 수 있습니다.
텍스트 변환기로 변환 결과를 미리 확인하면 코드 작성 시 참고할 수 있습니다. 특히 이스케이프 처리나 인코딩 변환은 규칙이 복잡해서, 도구를 사용해 검증하는 것이 좋습니다.
다양한 텍스트 형식의 이해
JSON, XML, CSV, HTML 등 텍스트 기반 데이터 형식은 각각 고유한 규칙을 가지고 있습니다. 한 형식에서 다른 형식으로 변환할 때는 이런 규칙을 정확히 이해하고 적용해야 합니다. 온라인 변환 도구는 이런 변환 작업을 정확하게 수행하는 데 도움이 됩니다.
특히 특수문자 처리는 형식마다 다릅니다. HTML에서는 앰퍼샌드를 엔티티로 변환해야 하고, JSON에서는 따옴표를 이스케이프해야 합니다. 이런 세부 규칙을 모두 외우기는 어렵기 때문에 적절한 도구를 활용하는 것이 현명합니다.