URL 인코딩 및 디코딩 방법: 전체 가이드
빠른 답변
URL 인코딩은 안전하지 않은 문자를 %XX 시퀀스로 변환합니다. 여기서 XX는 바이트의 16진수 값입니다. 공백은 %20(또는 양식 데이터의 +)이 되고, 한자는 멀티바이트 %XX 시퀀스가 됩니다. 무료 URL 인코더 및 URL 디코더를 사용하세요. 모든 처리는 브라우저에서 로컬로 이루어집니다.
소개
퍼센트 인코딩이라고도 하는 URL 인코딩은 URL이 인터넷을 통해 안전하게 전송될 수 있도록 URL에 예약된 문자와 안전하지 않은 문자를 인코딩하는 메커니즘입니다. URLs에는 제한된 ASCII 문자 집합만 포함될 수 있습니다. 다른 모든 문자(공백, ASCII가 아닌 문자, 기호)는 %로 시작하고 그 뒤에 바이트 값을 나타내는 두 개의 16진수 숫자가 오는 시퀀스로 백분율로 인코딩되어야 합니다.
단계별
-
인코딩이 필요한 항목 식별
예약되지 않은 집합(A-Z, a-z, 0-9, -, ., _, ~)에 없는 문자는 백분율로 인코딩되어야 합니다. 여기에는 공백, = 및 &와 같은 쿼리 구분 기호, 슬래시, 중국어, 아랍어 또는 그림 이모티콘과 같은 ASCII가 아닌 모든 문자가 포함됩니다.
-
URL 또는 쿼리 문자열을 인코딩합니다.
URL 인코더 도구에 텍스트를 붙여넣습니다. encodeURIComponent()를 사용하여 모든 예약 문자를 인코딩합니다. 결과는 출력 필드에 즉시 나타납니다.
-
인코딩된 결과 복사
복사 버튼을 클릭하여 백분율로 인코딩된 문자열을 복사합니다. 이제 URL 쿼리 매개변수, API 요청 또는 양식 제출에 안전하게 포함할 수 있습니다.
-
인코딩된 URL 디코딩
인코딩된 URL 또는 쿼리 문자열을 URL 디코더 도구에 붙여넣습니다. decodeURIComponent()를 사용하여 원래 문자를 복원합니다. 디코딩된 출력이 예상과 일치하는지 확인합니다.
-
극단적인 사례 확인
공백이 올바르게 디코딩되었는지(%20 vs +), 멀티바이트 UTF-8 시퀀스가 올바른 문자로 디코딩되었는지, 이미 인코딩된 문자열이 이중 인코딩되지 않았는지 확인하세요.
예
공백을 사용하여 텍스트 인코딩
입력: Hello World
산출: Hello%20World
경로 구분 기호를 인코딩합니다.
입력: a/b
산출: a%2Fb
한자 인코딩(UTF-8)
입력: 你好
산출: %E4%BD%A0%E5%A5%BD
인코딩된 쿼리 매개변수 디코딩
입력: key%3Dvalue%26foo%3Dbar
산출: key=value&foo=bar
일반적인 문제
- 이중 인코딩: 이미 인코딩된 문자열을 인코딩하면 %20이 %2520으로 바뀝니다. 다시 인코딩하기 전에 입력이 이미 인코딩되었는지 항상 확인하세요.
- encodeURI와 encodeURIComponent 혼동: encodeURI는 /, ?, &와 같은 예약된 문자를 전체 URLs에 대해 그대로 유지하는 반면 encodeURIComponent는 쿼리 매개변수 값에 대한 모든 것을 인코딩합니다.
- 공간 처리: %20은 백분율로 인코딩된 형식입니다. +는 RFC 3986에 따른 URL 경로나 쿼리 문자열이 아닌 application/x-www-form-urlencoded 본문 데이터에서만 유효합니다.
- 비UTF-8 레거시 인코딩: 최신 브라우저는 UTF-8로 인코딩하지만 레거시 시스템은 GBK 또는 Latin-1을 사용할 수 있으므로 상대방에서 디코딩할 때 모지베이크가 발생할 수 있습니다.
팁
- 개별 쿼리 매개변수 값에는 encodeURIComponent()를 사용하고, 이미 잘 구성된 전체 URLs에는 encodeURI()를 사용합니다.
- 쿼리 문자열을 작성할 때 = 또는 & 구분 기호가 아닌 값을 인코딩합니다. 각 값을 별도로 인코딩한 다음 &로 결합합니다.
- 잘못된 쿼리 문자열로 인해 400 오류를 반환하는 API 호출을 디버깅하려면 URL 인코더 및 디코더 도구를 사용하세요.
- mojibake를 방지하려면 항상 동일한 문자 인코딩(UTF-8)을 사용하여 서버 측에서 디코딩하십시오.