본문으로 건너뛰기

URL 인코더, %20이랑 +는 진짜 같은 거야?

"공백 인코딩이 두 가지야?"

URL 자료 보다 보면 공백이 %20으로 적힌 곳도 있고 +로 적힌 곳도 있다. 두 표기 모두 공백 인코딩인데 왜 두 가지일까. 한 번 풀어 본다.

%20의 자리

%20은 RFC 3986 표준 URL 인코딩. URL 경로(path)에서 공백을 표현하는 표준 방식. https://example.com/hello%20world.

+의 자리

+는 폼 데이터(application/x-www-form-urlencoded) 인코딩. URL 쿼리 스트링이나 POST 본문에서 공백을 표현. ?q=hello+world.

같은 결과, 다른 자리

  • 경로 → %20 표준
  • 쿼리 → + 또는 %20 모두 가능
  • POST 폼 → + 표준

실수 자주 하는 지점

+를 쿼리 스트링이 아닌 경로에 쓰면 일부 서버가 다르게 처리. 안전하게 가려면 경로는 %20, 쿼리는 +로 통일하는 흐름이 무난.

도구 활용

도구는 보통 %20 표준 인코딩 결과를 보여 준다. 폼 데이터용 + 인코딩이 필요하면 별도 옵션 확인. URL 인코더는 표준 인코딩 위주, 결과 활용 시 자리에 맞춰 변형.

실제 코드 예시

  • JavaScript encodeURIComponent → %20
  • Java URLEncoder → +
  • Python urllib.parse.quote → %20
  • PHP urlencode → +

언어별 기본 함수 결과가 다르다는 점도 인식 필요.

디코딩 시 주의

+를 디코딩하면 공백으로. %20도 공백으로. 두 표기 모두 디코딩 결과는 같다. 퍼센트 인코딩 도구로 양방향 처리.

마무리

%20과 +는 같은 공백을 다르게 표현. 자리에 따라 적절한 표기를 쓰면 호환성 부담이 작아진다.

🚀
BMI 계산기 바로 사용하기
지금 바로 무료로 이용해보세요!
도구 사용하기 →