javascript encoding url / url encode decode 하기 / 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 를 사용해야 한다.