2017. 6. 28. 11:22ㆍlanguage/javascript
javascript encoding url / url encode decode 하기
javascript 한글 깨짐
javascript 에서 encoding, decoding 하는 함수는 다음과 같다.
escape <-> unescape encodeURI <-> decodeURI encodeURIComponent <-> decodeURIComponent |
위 함수들은 각각 문자열을 부호화 하거나 부호화된 문자열을 되돌리는 함수이다.
기본적으로 javascript에 내장되어 있다.
각각 부호화 하는 범위가 다르기 때문에 상황에 맞게 적절히 사용하는 것을 권장한다.
escape
사용방법 : escape("문자열");
- 문자열의 각 문자들을 '%16진수코드값' 형태로 변환
- 1바이트 문자는 '%XX' 형태로 표시
- 영문 알파벳과, 숫자, 일부 특수문자(@, *, -, _, +, ., /)를 제외 문자만 인코딩
- 한글이 깨지는 것을 방지하기 위하여 사용
- 한글, 한자등(2바이트)은 '%u16진수4자리'로 표시
unescape
사용방법 : unescape("%16진수코드값");
- 코드값에 맞는 문자로 변환 (escape 로 변환된 코드값만 문자로 변환)
encodeURI
사용방법 : encodeURI(uri);
- 인터넷 주소에 사용되는 일부 특수문자(:, ;, /, =, ?, & 등)를 제외 문자만 인코딩
- 보통 인터넷 주소의 파라미터 전체를 인코딩할 때 사용
decodeURI
사용방법 : decodeURI(encodedURI로 인코딩 한 문자열);
- encodeURI 로 인코딩한 값을 다시 원래대로 디코딩
encodeURIComponent
사용방법 : encodeURIComponent(url 전체);
- encodeURI이 제외한 일부 특수문자까지도 인코딩
- url 전체(인터넷 주소 전체)가 파라미터로 전송될 경우 사용가능
decodeURIComponent
사용방법 : decodeURIComponent(decodeURIComponent로 인코딩 한 문자열);
- encodeURIComponent 로 인코딩한 값을 다시 원래대로 디코딩
페이지의 charset 이 다를 경우 한글이 특히 깨지는 경우에 위의 함수들을 각각 성격에 맞게 사용하면 될 것 같다.
단순하게 한글만을 위해서는 escape를 사용하면 되겠다.
encodeURI 를 사용해도 큰 문제는 없다.
url의 파라미터 전체를 전송할 경우에는 encodeURI 사용하는것이 좋다.
url 자체가 파라미터로 들어가게 된다면 encodeURIComponent 를 사용해야 한다.
'language > javascript' 카테고리의 다른 글
javascript cookie 사용하기 (0) | 2018.04.11 |
---|---|
javascript 배열 중복 제거 (0) | 2018.04.10 |
javascript getyear 117 118 / getyear 쓰지말고 getFullYear 쓰자 (6) | 2018.01.10 |
spin.js 에 알림말 text 넣기 / 로딩바 (0) | 2017.08.22 |
javascript onbeforeunload 오작동 / 버그 (0) | 2017.06.29 |
javascript 프로그레스바 / 로딩바 플러그인 (0) | 2017.05.29 |
html2canvas 적용 시 table border 안나오는 문제 (4) | 2017.03.13 |
JSP 페이지 이미지로 저장, 웹페이지 이미지로 저장, 페이지 이미지 캡쳐 (12) | 2017.03.13 |
javascript showModalDialog 에서 window.open 시 session 이슈 (0) | 2017.01.05 |
javascript 중복 submit 방지 / 다중 클릭 방지 / 중복 클릭 방지 (16) | 2016.12.09 |