การเข้ารหัส URL คืออะไร:
ควรเข้ารหัส URL เมื่อมีอักขระพิเศษอยู่ใน URL ตัวอย่างเช่น:
console.log(encodeURIComponent('?notEncoded=&+'));
เราสามารถสังเกตได้ในตัวอย่างนี้ว่าตัวละครทั้งหมดยกเว้นสตริงnotEncoded
จะถูกเข้ารหัสด้วยเครื่องหมาย% การเข้ารหัส URL ยังเป็นที่รู้จักกันในนามการเข้ารหัสแบบเปอร์เซ็นต์เพราะมันจะหนีอักขระพิเศษทั้งหมดด้วย% หลังจากนี้% เซ็นชื่อตัวละครทุกตัวมีรหัสที่ไม่ซ้ำ
ทำไมเราต้องเข้ารหัส URL:
อักขระบางตัวมีค่าพิเศษในสตริง URL ตัวอย่างเช่น ตัวอักษรหมายถึงจุดเริ่มต้นของสตริงแบบสอบถาม เพื่อค้นหาแหล่งข้อมูลบนเว็บอย่างประสบความสำเร็จจึงจำเป็นที่จะต้องแยกแยะระหว่างเมื่อตัวละครมีความหมายว่าเป็นส่วนหนึ่งของสตริงหรือส่วนหนึ่งของโครงสร้าง URL
เราจะทำการเข้ารหัส URL ใน JS ได้อย่างไร:
JS เสนอพวงของการสร้างในฟังก์ชั่นยูทิลิตี้ที่เราสามารถใช้ในการเข้ารหัส URL ได้อย่างง่ายดาย นี่เป็นสองทางเลือกที่สะดวกสบาย:
encodeURIComponent()
: ใช้องค์ประกอบของ URI เป็นอาร์กิวเมนต์และส่งคืนสตริง URI ที่เข้ารหัส
encodeURI()
: ใช้ URI เป็นอาร์กิวเมนต์และส่งคืนสตริง URI ที่เข้ารหัส
ตัวอย่างและคำเตือน:
ได้ตระหนักถึงการไม่ผ่านใน URL ทั้งหมด (รวมทั้งรูปแบบเช่น https: //) encodeURIComponent()
ลง สิ่งนี้สามารถแปลงให้เป็น URL ที่ใช้งานไม่ได้ ตัวอย่างเช่น:
// for a whole URI don't use encodeURIComponent it will transform
// the / characters and the URL won't fucntion properly
console.log(encodeURIComponent("http://www.random.com/specials&char.html"));
// instead use encodeURI for whole URL's
console.log(encodeURI("http://www.random.com/specials&char.html"));
เราสามารถสังเกตได้ว่าเราใส่ URL ทั้งหมดไว้ในencodeURIComponent
ที่ที่เครื่องหมายสแลช (/) ถูกแปลงเป็นอักขระพิเศษ สิ่งนี้จะทำให้ URL ทำงานไม่ถูกต้องอีกต่อไป
ดังนั้น (ตามชื่อหมายถึง) ใช้:
encodeURIComponent
ในบางส่วนของ URL ที่คุณต้องการเข้ารหัส
encodeURI
ใน URL ทั้งหมดที่คุณต้องการเข้ารหัส