문자열을 URL 인코딩하는 방법
퍼센트 인코딩은 URL에서 안전하지 않은 문자를 % 뒤에 해당 문자의 각 UTF-8 바이트를 16진수로 적은 값으로 바꿉니다. encodeURIComponent()를 사용하는 '구성요소' 모드는 쿼리 값 하나나 경로 세그먼트 하나에 적합합니다.
계산 예시
| 문자 | UTF-8 바이트 | 구성요소 |
|---|---|---|
| ␠ | %20 | %20 |
| & | %26 | %26 |
| = | %3D | %3D |
| / | %2F | %2F |
| ? | %3F | %3F |
| é | %C3 %A9 | %C3%A9 |
| 😀 | %F0 %9F %98 %80 | %F0%9F%98%80 |
'구성요소' 모드는 문장 전체를 하나의 안전한 값으로 인코딩합니다.
- 입력
- rock & roll/size=XL? café 😀
- 결과 ·
encodeURIComponent() - rock%20%26%20roll%2Fsize%3DXL%3F%20caf%C3%A9%20%F0%9F%98%80
'전체 URL' 모드는 & = / ?를 그대로 두므로 완전한 URL에만 사용하세요.
- 입력
- rock & roll/size=XL? café 😀
- 결과 ·
encodeURI() - rock%20&%20roll/size=XL?%20caf%C3%A9%20%F0%9F%98%80
도구의 처리 방식
- 영문자 A–Z와 a–z, 숫자 0–9, 그리고 - _ . ! ~ * ' ( )는 절대 바뀌지 않습니다.
- 그 밖의 모든 문자는 UTF-8 바이트로 변환되고, 각 바이트는 %와 대문자 16진수 두 자리로 표기됩니다. é는 2바이트, 대부분의 이모지는 4바이트입니다.
- '구성요소' 모드는 예약 문자 : / ? # [ ] @ & = + $ , ;도 인코딩하므로 URL 구조가 바뀌지 않습니다.