맥OS는 한동안 한글 파일명을 초성·중성·종성이 분리된 NFD 방식으로 저장한 반면, 윈도우와 대부분의 웹 서비스는 완성형 글자 하나로 묶은 NFC 방식을 사용했다. 그 결과 눈으로는 완전히 똑같아 보이는 "한글"이라는 파일명 두 개가 실제로는 다른 바이트로 인코딩되어, 정렬하거나 중복을 제거하면 서로 다른 항목처럼 취급되는 문제가 실제로 발생했다.
알파벳순과 숫자순 정렬의 차이
알파벳순(사전식) 정렬은 문자열을 텍스트처럼 문자 하나하나 비교합니다. 그래서 문자열 "10"은 "9"보다 앞에 옵니다. 문자 "1"이 사전순으로 "9"보다 작기 때문입니다 — 정렬은 그것이 숫자라는 것을 "이해"하지 못합니다. 숫자순 정렬은 반대로 비교하기 전에 문자열을 숫자로 파싱해서 9, 10, 11이라는 기대한 순서를 만들어냅니다.
정렬 시 대소문자 구분
대부분의 시스템에서 대문자는 사전순으로 소문자보다 앞에 옵니다(문자 인코딩 때문). 그래서 대소문자를 구분하는 정렬에서 "Zebra"가 "apple"보다 앞에 올 수 있습니다. 대소문자를 구분하지 않는 정렬은 비교를 위해 먼저 문자열을 같은 대소문자로 정규화하되, 결과에는 원래 대소문자를 유지합니다.
중복 제거
중복 제거는 반복되는 줄을 문자 단위로 비교해 삭제하며, 의미로 판단하지 않습니다. 한글 텍스트에서는 정규화 방식(NFC/NFD)이 다르면 화면에는 완전히 똑같아 보이는 두 줄이 바이트 수준에서는 다른 문자열로 취급되어, 실제로는 중복인데도 중복으로 인식되지 않을 수 있습니다.
이 기능이 필요한 이유
- 가져오기 전에 이메일 주소나 URL 목록에서 중복 항목 제거하기.
- 버전이나 ID 목록을 텍스트가 아닌 숫자로 정렬하기.
- 두 목록을 같은 정렬 형태로 만들어 두 데이터셋을 빠르게 비교하기.
자연 정렬(natural sort)
자연 정렬은 알파벳순 방식과 숫자순 방식 사이의 절충안입니다 — 문자열 안에 있는 연속된 숫자를 숫자로 인식하고, 나머지 문자는 텍스트로 비교합니다. 그 덕분에 형식적으로는 숫자가 아니라 문자열임에도 file2.txt가 file10.txt보다 앞에 오게 됩니다. 텍스트 접두사가 붙은 파일명이나 버전명을 정렬할 때 유용합니다.