"디코딩이 안 되거나 깨져 보여"
도구 결과가 의도와 다를 때가 있다. 도구가 잘못된 게 아니라 입력·문자셋 어딘가에서 어긋난 경우가 대부분.
점검 1: 이중 인코딩 의심
이미 인코딩된 자료를 다시 인코딩하면 % 자체가 %25로 변환. 받는 쪽이 한 번만 디코딩하면 깨진다. 입력 자료가 이미 인코딩됐는지 확인.
점검 2: 문자셋 일치
UTF-8이 표준. EUC-KR·CP949로 인코딩된 자료를 UTF-8로 디코딩하면 깨진다. 출처 문자셋 확인.
점검 3: %XX 형식 정확
- % 다음 16진수 두 자리
- %G2 같은 잘못된 16진수 → 오류
- %2 (한 자리만) → 오류
인코딩 형식 자체에 오류가 있으면 디코딩 불가.
점검 4: 잘림 여부
긴 URL이 카톡·메신저 등에서 잘리는 경우. 끝부분이 % 다음 한 자리로 끝나면 형식 오류. URL 인코더로 받은 URL 전체가 정확한지 확인.
점검 5: 다른 인코딩 방식
URL 인코딩이 아닌 Base64·HTML 엔티티 같은 다른 인코딩일 수 있다. % 표기가 없는데 깨져 보이면 다른 인코딩 의심.
점검 흐름 정리
- 이중 인코딩 의심
- 문자셋 일치
- %XX 형식 검증
- 잘림 여부
- 다른 인코딩 가능성
다섯 단계를 거치면 결과 차이의 원인이 거의 잡힌다. URL 디코더로 다시 입력해 결과 비교.
자주 하는 실수
- 이미 인코딩된 자료 다시 인코딩
- UTF-8 아닌 자료 처리
- 잘린 URL 그대로 디코딩
- 다른 인코딩과 혼동
마무리
결과가 다르면 도구를 의심하기 전에 입력을 점검. 다섯 가지 중 하나가 원인인 경우가 대부분이다.