단축 url 서비스에 대해 공부하다가 어떤 방식으로 인코딩하는 게 좋은지에 대해 고찰하다가 인코딩 방식에 대해 공부하였다.
base64란?
3바이트 단위로 데이터를 읽고 이를 6비트 단위로 쪼개서 4개의 base64 문자로 변환한다. 그 이유는 6비트 단위로 변환하면 총 64개의 문자를 사용할 수 있기 때문이다. A-Z a-z 0-9 + / 등의 문자 집합으로 이루어져 있으며 데이터 길이가 3의 배수가 아닐 경우 = 문자가 추가된다.
텍스트 환경에서도 바이너리 데이터를 안전하게 전송가능하다는 특징이 있다. 보았듯이 ASCII 문자만 사용하기 때문에 대부분의 시스템에서 깨지지 않는다는 장점이 있다. 물론 기본 데이터보다 커진다는 점과 URL-safe 하지 않다는 단점이 있다.
그럼 url 에 사용할때는 어떤 인코딩 방식을 채택할까?
base62에 대하여
base62는 / + = 가 존재하지 않기 때문에 URL 상에서 안전하다. 예를 들어
https://example.com/abc+xyz 같은 경우 +가 공백으로 변환될 수 있다.
https://example.com/abc/xyz 같은 경우 /가 경로 구분자로 해석될 수 있다.
Base62는 0-9, A-Z, a-z만 사용하여 URL-safe한 문자열을 보장한다. 또한 base64 에서는 3의 배수가 아닐 경우에 패딩 문자가 추가된 다고 했었는데 base62는 그렇지 않다.
그리고 다른 base36 base16 등에 비해 더 짧게 문자를 생성가능 하기 때문에 범용적으로 더 많이 사용 되는 듯하다. 이런 장점들은 가독성을 향상시킨다는 장점을 만들기도 한다. 특수문자를 포함하지 않고 짧게 생성하기 떄문이다.
나는 그동안 왜 base62 를 채택하는지에 대해 몰랐다. 그냥 무지했었지만 이런 장점들과 이유 때문에 사용한다는 것을 알고 재미있었다. 역시 세상은 넒다 공부할게 많고, 사람들이 사용하는 이유에는 다 근거가 있었다.
'TIL' 카테고리의 다른 글
2025. 03. 08 (0) | 2025.03.08 |
---|---|
2025. 03. 02 (0) | 2025.03.02 |
2024. 12 .01 (0) | 2024.12.01 |
2024. 11. 24 (1) | 2024.11.24 |
2024. 11. 17 (0) | 2024.11.17 |