최고의 JavaScript URL 디코드 유틸리티는 무엇입니까? 인코딩도 좋을 것이고 jQuery와 잘 작동하는 것이 추가 보너스입니다.
최고의 JavaScript URL 디코드 유틸리티는 무엇입니까? 인코딩도 좋을 것이고 jQuery와 잘 작동하는 것이 추가 보너스입니다.
답변:
내가 사용했습니다 에 encodeURIComponent () 와 decodeURIComponent () 도 있습니다.
다음은 완전한 기능입니다 ( PHPJS 에서 가져옴 ).
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
이것을 사용하십시오
unescape(str);
나는 훌륭한 JS 프로그래머가 아니며 모두 시도해 보았습니다.
decodeURIComponent()
.
decodeURIComponent(mystring);
이 코드를 사용하여 전달 된 매개 변수를 얻을 수 있습니다.
//parse URL to get values: var i = getUrlVars()["i"];
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
또는이 하나의 라이너는 매개 변수를 가져옵니다.
location.search.split("your_parameter=")[1]
window.location.search
대신 사용해야 합니다.
//How decodeURIComponent Works
function proURIDecoder(val)
{
val=val.replace(/\+/g, '%20');
var str=val.split("%");
var cval=str[0];
for (var i=1;i<str.length;i++)
{
cval+=String.fromCharCode(parseInt(str[i].substring(0,2),16))+str[i].substring(2);
}
return cval;
}
document.write(proURIDecoder(window.location.href));
내가 사용한 것은 다음과 같습니다.
자바 스크립트에서 :
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
PHP에서 :
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
http://www.mynewsfeed.x10.mx/articles/index.php?id=17에서 온라인으로 시도 할 수도 있습니다.
var uri = "my test.asp?name=ståle&car=saab";
console.log(encodeURI(uri));
decodeURIComponent()
괜찮지 만 encodeURIComponent()
직접 사용하지 마십시오 . 이 같은 예약 된 문자 탈출에 실패 *
, !
, '
, (
,와 )
. 이에 대한 자세한 정보는 RFC3986을 확인하십시오 . Mozilla Developer Network 문서는 좋은 설명과 해결책을 제공합니다. 설명...
RFC 3986 (!, ', (,) 및 *를 보유 함)을보다 엄격하게 준수하기 위해 이러한 문자에 정규화 된 URI 구분 사용이없는 경우에도 다음을 안전하게 사용할 수 있습니다.
해결책...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
확실하지 않은 경우 JSBin.com에서 제대로 작동하는 데모를 확인하십시오 . 이것을 직접 사용 encodeURIComponent()
하는 JSBin.com 의 나쁜 데모 와 비교하십시오 .
좋은 코드 결과 :
thing%2athing%20thing%21
잘못된 코드 결과 encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
와decodeURIComponent
?