เข้ารหัสพารามิเตอร์ของสตริงคิวรีให้ถูกต้อง
เครื่องมือนี้มีสองโหมด โหมดส่วนประกอบ (encodeURIComponent) ใช้กับชื่อหรือค่าพารามิเตอร์หนึ่งรายการ ส่วนโหมด URL แบบเต็ม (encodeURI) ใช้กับ URL ทั้งเส้นที่มีโครงสร้างถูกต้องอยู่แล้ว การใช้สลับกันเป็นสาเหตุที่พบบ่อยที่สุดของสตริงคิวรีที่เสีย
ตัวอย่างการคำนวณ
โหมด URL แบบเต็มคง & ไว้ในค่า เซิร์ฟเวอร์จึงอ่านได้สองพารามิเตอร์แทนที่จะเป็นหนึ่ง
- ข้อมูลเข้า
- https://example.com/search?q=salt & pepper&page=2
- ผลลัพธ์ ·
encodeURI() - https://example.com/search?q=salt%20&%20pepper&page=2
พารามิเตอร์ที่เซิร์ฟเวอร์อ่านได้
- "q" = "salt "
- " pepper" = ""
- "page" = "2"
การเข้ารหัสค่าในโหมดส่วนประกอบก่อนจะทำให้ยังคงเป็นพารามิเตอร์เดียว
- ข้อมูลเข้า
- salt & pepper
- ผลลัพธ์ ·
encodeURIComponent() - salt%20%26%20pepper
https://example.com/search?q=salt%20%26%20pepper&page=2
พารามิเตอร์ที่เซิร์ฟเวอร์อ่านได้
- "q" = "salt & pepper"
- "page" = "2"
เปรียบเทียบโหมดส่วนประกอบกับ URL แบบเต็มทีละอักขระ
| อักขระ | ส่วนประกอบ | URL แบบเต็ม |
|---|---|---|
| : | %3A | : |
| / | %2F | / |
| ? | %3F | ? |
| # | %23 | # |
| & | %26 | & |
| = | %3D | = |
| + | %2B | + |
| ␠ | %20 | %20 |
| é | %C3%A9 | %C3%A9 |
วิธีที่เครื่องมือจัดการ
- เข้ารหัสชื่อและค่าของแต่ละพารามิเตอร์แยกกันในโหมดส่วนประกอบ ซึ่งจะ escape & = ? # + และ /
- นำคู่ที่เข้ารหัสแล้วมาต่อกันในรูป ชื่อ=ค่า คั่นด้วย & แล้วเติมผลลัพธ์ไว้หลัง ? ใน URL
- ใช้โหมด URL แบบเต็มกับ URL ทั้งเส้นเท่านั้น: โหมดนี้คง : / ? # & = + ไว้ตามเดิม จึงปกป้องค่าที่มีอักขระเหล่านี้ไม่ได้