About URL Encoding
URL 인코딩은 퍼센트 인코딩이라고도 하며, URI(Uniform Resource Identifier)에서 정보를 인코딩하는 메커니즘입니다. URL에서 허용되지 않는 문자를 인터넷을 통해 전송할 수 있는 형식으로 변환하는 데 사용됩니다. 이 인코딩은 안전하지 않은 ASCII 문자를 "%"와 두 개의 16진수 숫자로 대체합니다.
URL 인코딩의 일반적인 용도
- URL에서 쿼리 문자열 형식 지정
- HTTP 요청을 통한 폼 데이터 전송 (application/x-www-form-urlencoded)
- 특수 문자나 공백이 포함된 유효한 URL 생성
- URL에서 비ASCII 문자를 인코딩하기
- API 및 웹 서비스에서 복잡한 매개변수 전달
URL 인코딩 작동 방식
URL 인코딩은 다음 원칙을 따릅니다:
- 영숫자 문자(A-Z, a-z, 0-9)는 변경되지 않습니다
- 공백, ?, &, =, %, +와 같은 특수 문자는 퍼센트 인코딩된 값으로 변환됩니다
- UTF-8로 인코딩된 각 바이트는 별도로 퍼센트 인코딩됩니다
- 공백 문자는 "%20" 또는 "+" (쿼리 매개변수에서)로 인코딩될 수 있습니다
- /, :, ?, #, [와 같은 예약 문자는 URL에서 특별한 의미를 가지며 문맥에 따라 다르게 처리될 수 있습니다
encodeURI와 encodeURIComponent 비교
JavaScript는 URL 인코딩을 위한 두 가지 함수를 제공합니다:
- encodeURI: URI 전체를 인코딩하며 URI 구문에 속하는 문자(/:?#[]@!$&'()*+,;=)는 유지합니다
- encodeURIComponent: URI 구성 요소(예: 쿼리 매개변수 값)를 인코딩하며 URI에서 특별한 의미를 가진 문자를 포함해 더 많은 문자를 인코딩합니다
사용자 입력 또는 쿼리 매개변수를 인코딩할 때 대부분의 경우에 encodeURIComponent()
모든 잠재적으로 문제가 될 수 있는 문자를 올바르게 인코딩하므로 더 안전한 선택입니다.
국제 문자를 위한 URL 인코딩
최신 브라우저는 비ASCII 문자를 UTF-8로 인코딩한 후 각 바이트를 퍼센트 인코딩합니다. 이를 통해 국제 문자, 이모지 및 기타 유니코드 기호를 URL에 올바르게 포함할 수 있습니다. 예를 들어 일본어 문자 "日"는 먼저 UTF-8로 세 바이트(E6 97 A5)로 인코딩되고, 이후 "%E6%97%A5"로 퍼센트 인코딩됩니다.
Examples
일반 텍스트 | URL 인코딩됨 |
---|---|
Hello World | Hello%20World |
https://example.com/?q=search term | https%3A%2F%2Fexample.com%2F%3Fq%3Dsearch%20term |
50% 할인 판매! | 50%25%20할인%20판매%21 |
Smith & Jones LLC | Smith%20%26%20Jones%20LLC |