%가 잔뜩 붙은 주소 읽기
로그나 리퍼러에서 %EC%95%88%EB%85%95 같은 값을 만나면 그대로는 무슨 뜻인지
알 수 없습니다. 여기 붙여넣으면 원래 글자로 되돌아옵니다. 주소 한 줄을 통째로 넣어도
https:// 부분은 건드리지 않고 인코딩된 자리만 풉니다.
이중 인코딩 알아보기
디코딩했는데 여전히 %EA%B0%80처럼 보인다면 이중 인코딩된 값입니다.
%가 %25로 한 번 더 감싸진 상태이고, 대개 인코딩을 두 번 하는
코드가 어딘가에 있다는 신호입니다.
이중 인코딩 끝까지 풀기를 켜면 더 이상 변하지 않을 때까지 반복합니다.
다만 이건 증상 완화지 해결이 아닙니다 — 값이 100%25처럼 진짜 퍼센트 기호를
담고 있으면 그것까지 풀어 버려 원본이 망가집니다. 평소에는 꺼 두고, 원인을 찾을 때만 켜세요.
+ 기호 처리
+를 공백으로 볼지는 그 값이 어디서 왔는지에 달렸습니다.
| 출처 | 설정 |
|---|---|
| HTML 폼 전송 본문, 검색 쿼리스트링 | 켜기 — +는 공백 |
| 경로, JSON 값, Base64 문자열 | 끄기 — +는 그냥 + |
Base64 문자열에 이걸 켜면 +가 전부 공백이 되어 값이 깨집니다. 기본값이 꺼짐인
이유입니다.
"% 뒤에 16진수 두 자리가 없습니다"
인코딩되지 않은 %가 값 안에 있다는 뜻입니다. 할인 50% 적용 같은
문자열을 인코딩하지 않고 주소에 넣으면 이 오류가 납니다. 값 안의 퍼센트 기호는 반드시
%25로 써야 합니다. 오류 아래에 몇 번째 글자인지 표시해 줍니다.
한글이 아니라 깨진 글자가 나옵니다
원본이 UTF-8이 아니라 EUC-KR로 인코딩된 경우입니다. 구형 시스템의 %C7%D1
같은 값이 이에 해당합니다. 이 도구는 UTF-8만 다루므로, EUC-KR 값은
Base64 디코딩의 문자셋 선택을 활용하거나 서버 쪽에서 변환해야 합니다.