가끔 php와 javascript 간에 인코딩, 디코딩을 해야하는 경우가 있어 정리해 봤습니다.
아래는 '부[공백]산'을 예로 확인해 본 결과입니다.
===== php =====
$txt = '부 산';
echo urlencode($txt);
%BA%CE+%BB%EA
echo rawurlencode($txt);
%BA%CE%20%BB%EA
echo urlencode(iconv('euc-kr', 'utf-8', $txt));
%EB%B6%80+%EC%82%B0
echo rawurlencode(iconv('euc-kr', 'utf-8', $txt));
%EB%B6%80%20%EC%82%B0
===== javascript =====
escape('부 산')
%uBD80%20%uC0B0
encodeURI('부 산')
%EB%B6%80%20%EC%82%B0
encodeURIComponent('부 산')
%EB%B6%80%20%EC%82%B0
이번에는 '부[공백]산[공백](가@다%라!0123)+abc' 입니다.
===== php ====
$txt = '부 산 (가@다%라!0123)+abc';
echo urlencode($txt);
%BA%CE+%BB%EA+%28%B0%A1%40%B4%D9%25%B6%F3%210123%29%2Babc
echo rawurlencode($txt);
%BA%CE%20%BB%EA%20%28%B0%A1%40%B4%D9%25%B6%F3%210123%29%2Babc
echo urlencode(iconv('euc-kr', 'utf-8', $txt));
%EB%B6%80+%EC%82%B0+%28%EA%B0%80%40%EB%8B%A4%25%EB%9D%BC%210123%29%2Babc
echo rawurlencode(iconv('euc-kr', 'utf-8', $txt));
%EB%B6%80%20%EC%82%B0%20%28%EA%B0%80%40%EB%8B%A4%25%EB%9D%BC%210123%29%2Babc
===== javascript =====
escape('부 산 (가@다%라!0123)+abc')
%uBD80%20%uC0B0%20%28%uAC00@%uB2E4%25%uB77C%210123%29+abc
encodeURI('부 산 (가@다%라!0123)+abc')
%EB%B6%80%20%EC%82%B0%20(%EA%B0%80@%EB%8B%A4%25%EB%9D%BC!0123)+abc
encodeURIComponent('부 산 (가@다%라!0123)+abc')
%EB%B6%80%20%EC%82%B0%20(%EA%B0%80%40%EB%8B%A4%25%EB%9D%BC!0123)%2Babc
더불어 http://en.wikipedia.org/wiki/Uniform_resource_locator#List_of_allowed_URL_characters 도 함께 보시면
좋을 것 같습니다.
20160525 추가
http://www.the-art-of-web.com/javascript/escape/