javascript encoding url / url encode decode 하기 / javascript 한글 깨짐

2017.06.28 11:22language/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 를 사용해야 한다.