모든 아티클

Slugify: 제목이 유효한 URL로 바뀌는 과정

한글을 로마자로 옮기는 방식은 시대에 따라 바뀌었다. 1937년 매큔-라이샤워 표기법이 오랫동안 국제 표준처럼 쓰였지만, 2000년 한국 정부는 아포스트로피나 특수기호 없이도 입력하기 쉬운 국어의 로마자 표기법(Revised Romanization)을 새 표준으로 채택했다. 그 결과 같은 한글 단어라도 어떤 표기법을 따르느냐에 따라 로마자 철자가 달라질 수 있다 — 예를 들어 "부산"은 매큔-라이샤워식으로 "Pusan", 개정 로마자 표기법으로는 "Busan"이 된다.

슬러그 변환이 하는 일

  • 모든 문자를 소문자로 바꿉니다.
  • 공백과 구두점을 하이픈으로 바꿉니다.
  • 한글을 국어의 로마자 표기법에 가까운 방식으로 음역하거나, 대응할 수 없는 문자를 제거합니다.
  • 반복되는 하이픈을 줄이고 시작과 끝의 하이픈을 제거합니다.

예를 들어 "안녕, 세상! 잘 지내니?"라는 제목은 annyeong-sesang-jal-jinaeni 같은 형태가 됩니다.

일반 URL 인코딩만으로 충분하지 않은 이유

퍼센트 인코딩(한글 문자의 경우 %EC%95%88 등)은 URL에서 기술적으로 유효하지만, 사람이 읽을 수 없고 주소창이나 링크 공유 시 신뢰할 수 없어 보입니다. 슬러그는 단순한 기술적 유효성이 아니라 바로 이 가독성 문제를 해결합니다.

이 기능이 필요한 이유

  • 한국어 블로그 게시물 제목에서 URL을 자동으로 생성하기.
  • 온라인 스토어를 위해 제품명에서 읽기 쉬운 식별자를 만들기.
  • 허용되지 않는 문자를 피해 임의의 텍스트에서 파일명이나 CSS 클래스를 만들기.

충돌: 서로 다른 제목이 같은 슬러그가 될 때

"안녕, 세상!"과 "안녕 세상"이라는 두 제목은 정규화(소문자 변환, 구두점 제거) 후 원본 텍스트가 다름에도 같은 슬러그 annyeong-sesang이 됩니다. 슬러그가 고유 식별자로 쓰인다면(예: 게시물 URL) 이런 충돌을 별도로 해결해야 하며, 보통은 중복된 쪽에 숫자 접미사나 ID를 덧붙이는 방식으로 처리합니다.

도구 사용해보기