URL 인코딩 / 디코딩
퍼센트 인코딩, 전체 URL과 값의 구분을 명시적으로
모든 처리는 브라우저에서 이루어집니다. 데이터는 기기를 벗어나지 않습니다.
관련 도구
사용 방법
URL에는 제한된 문자 집합만 들어갈 수 있습니다. 나머지는 UTF-8 바이트를 16진수로 표현한 퍼센트 인코딩으로 바뀝니다. 미묘한 부분은 어떤 문자를 예약 문자로 볼 것인가이며, 이는 전체 URL을 인코딩하는지 그 안의 값 하나를 인코딩하는지에 달려 있습니다.
인코딩 또는 디코딩 선택
디코딩은 퍼센트 인코딩을 되돌립니다. 유효한 시퀀스가 아닌 % 문자가 섞여 있으면 조용히 망가뜨리는 대신 명확한 오류를 알려줍니다.
예약 문자 인코딩 여부 결정
쿼리 문자열 안에 들어갈 값 하나를 인코딩할 때는 켜두세요. :// ? & = 구조를 유지해야 하는 완전한 URL을 인코딩할 때는 끄세요.
결과 확인
공백은 %20이 되고 비ASCII 문자는 여러 바이트로 늘어납니다. 한글이나 일본어 한 글자가 세 개의 퍼센트 이스케이프가 되는 것은 정상입니다.
예시
검색어 인코딩
쿼리 값 "온라인 도구"는 %EC%98%A8%EB%9D%BC%EC%9D%B8%20%EB%8F%84%EA%B5%AC가 됩니다. 한글 한 글자가 UTF-8에서 3바이트를 차지하므로 각각 세 개의 이스케이프로 늘어납니다.
예약 문자 인코딩이 중요한 이유
전체 URL인 https://example.com/search?q=a&b를 예약 문자 인코딩까지 켜고 처리하면 ://와 ?까지 이스케이프되어 더 이상 쓸 수 없는 문자열이 됩니다. 전체 URL에는 이 옵션을 끄세요.
도구 소개
URL에 안전하게 넣을 수 있도록 텍스트를 인코딩하거나 퍼센트 인코딩된 문자열을 읽기 좋게 디코딩합니다. 전체 URL을 인코딩하는 경우와 URL 안의 값 하나를 인코딩하는 경우를 구분해 노출합니다. encodeURI와 encodeURIComponent의 차이이자 퍼센트 인코딩 버그의 대부분이 여기서 나옵니다.