- encodeURIComponent กับ encodeURI ต่างกันอย่างไร?
- encodeURIComponent แปลงอักขระสงวนทั้งหมด (รวมถึง / ? # & =) จึงเหมาะกับค่าเดี่ยวๆ เช่น คำค้นหาหรือค่าใน query parameter ส่วน encodeURI จะเก็บอักขระเหล่านั้นไว้ เหมาะกับการแปลง URL ทั้งเส้นโดยไม่ทำให้โครงสร้างเสีย
- ช่องว่างควรเป็น %20 หรือ +?
- ใน query string ทั้งสองแบบหมายถึงช่องว่าง + มาจากการเข้ารหัสฟอร์ม HTML (application/x-www-form-urlencoded) ส่วน %20 ใช้ได้ทุกที่รวมถึงใน path เปิด “+ แทนช่องว่าง” ถ้าต้องการให้ตรงกับ URL แบบฟอร์ม
- ทำไม URL ภาษาไทยถึงกลายเป็น %E0%B8… ยาวๆ?
- URL ส่งได้เฉพาะตัวอักษร ASCII ตัวอักษรไทยแต่ละตัวจึงถูกแปลงเป็น UTF-8 3 ไบต์ เขียนเป็น %XX เบราว์เซอร์จะแสดงภาษาไทยที่อ่านได้ในแถบที่อยู่ แต่สิ่งที่ส่งจริงคือแบบเข้ารหัส ส่วนชื่อโดเมนภาษาไทยจะใช้ punycode (xn--…) แทน