ยูทิลิตี้ถอดรหัส URL JavaScript ที่ดีที่สุดคืออะไร การเข้ารหัสก็ดีเช่นกันและทำงานได้ดีกับ jQuery เป็นโบนัสเพิ่มเติม
ยูทิลิตี้ถอดรหัส URL JavaScript ที่ดีที่สุดคืออะไร การเข้ารหัสก็ดีเช่นกันและทำงานได้ดีกับ jQuery เป็นโบนัสเพิ่มเติม
คำตอบ:
ฉันใช้encodeURIComponent ()และdecodeURIComponent ()ด้วย
นี่คือฟังก์ชั่นที่สมบูรณ์ (นำมาจากPHPJS ):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
ใช้สิ่งนี้
unescape(str);
ฉันไม่ใช่โปรแกรมเมอร์ JS ที่ยอดเยี่ยมได้ลองทั้งหมดและใช้งานได้ยอดเยี่ยม!
decodeURIComponent()
เนื่องจากการสนับสนุนที่ดีของตัวละครที่ไม่ใช่ ASCII
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));
หากคุณมีความรับผิดชอบในการเข้ารหัสข้อมูลใน PHP โดยใช้ urlencode rawurlencode ของ PHP จะทำงานร่วมกับการถอดรหัสของ JavaScript uric ส่วนประกอบโดยไม่จำเป็นต้องแทนที่อักขระ +
นี่คือสิ่งที่ฉันใช้:
ใน JavaScript:
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 เปรียบเทียบกับที่ไม่ดี, การสาธิตการทำงานที่ JSBin.com ใช้encodeURIComponent()
โดยตรง
ผลลัพธ์ที่ดี:
thing%2athing%20thing%21
ผลการรหัสที่ไม่ดีจากencodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
แล้วdecodeURIComponent
หรือยัง?