วิธีเข้ารหัสและถอดรหัส URL: คู่มือฉบับสมบูรณ์
ตอบด่วน
URL encoding แปลงอักขระ unsafe เป็น %XX โดย XX คือค่า hex ของ byte ช่องว่างเป็น %20 (หรือ + ใน form data) อักขระจีนเป็น multi-byte %XX ใช้ URL Encoder และ URL Decoder ฟรีของเรา —การประมวลผลในเบราว์เซอร์
การแนะนำ
URL encoding (percent-encoding) เป็นกลไกเข้ารหัสอักขระ reserved และ unsafe ใน URL เพื่อส่งผ่านอินเทอร์เน็ตได้ปลอดภัย URL มี ASCII จำกัด; อักขระอื่น (ช่องว่าง, ไม่ใช่ ASCII) ต้อง percent-encode เป็น % ตามด้วยเลข hex สองหลัก
ทีละขั้นตอน
-
ระบุสิ่งที่จำเป็นต้องเข้ารหัส
อักขระที่ไม่ได้อยู่ในชุดที่ไม่ได้สงวนไว้ (A-Z, a-z, 0-9, -, ., _, ~) จะต้องเข้ารหัสเป็นเปอร์เซ็นต์ ซึ่งรวมถึงการเว้นวรรค ตัวคั่นคิวรี เช่น = และ & เครื่องหมายทับ และอักขระที่ไม่ใช่ ASCII ทั้งหมด เช่น จีน อารบิก หรืออีโมจิ
-
เข้ารหัส URL หรือสตริงการสืบค้น
วางข้อความของคุณลงในเครื่องมือเข้ารหัส URL ใช้ encodeURIComponent() เพื่อเข้ารหัสทุกอักขระที่สงวนไว้ ผลลัพธ์จะปรากฏขึ้นทันทีในช่องผลลัพธ์
-
คัดลอกผลลัพธ์ที่เข้ารหัส
คลิกปุ่มคัดลอกเพื่อคัดลอกสตริงที่เข้ารหัสเป็นเปอร์เซ็นต์ ตอนนี้คุณสามารถฝังไว้อย่างปลอดภัยในพารามิเตอร์การสืบค้น URL คำขอ API หรือการส่งแบบฟอร์ม
-
ถอดรหัส URL ที่เข้ารหัส
วาง URL ที่เข้ารหัสหรือสตริงการสืบค้นลงในเครื่องมือถอดรหัส URL ใช้ decodeURIComponent() เพื่อกู้คืนอักขระดั้งเดิม ตรวจสอบว่าเอาต์พุตที่ถอดรหัสตรงกับที่คุณคาดหวัง
-
ตรวจสอบกรณีขอบ
ตรวจสอบว่ามีการถอดรหัสช่องว่างอย่างถูกต้อง (%20 เทียบกับ +) ลำดับ UTF-8 แบบหลายไบต์ถอดรหัสเป็นอักขระที่ถูกต้อง และสตริงที่เข้ารหัสแล้วไม่ได้เข้ารหัสซ้ำ
ตัวอย่าง
เข้ารหัสข้อความด้วยการเว้นวรรค
ป้อนข้อมูล: Hello World
เอาท์พุต: Hello%20World
เข้ารหัสตัวคั่นเส้นทาง
ป้อนข้อมูล: a/b
เอาท์พุต: a%2Fb
เข้ารหัสตัวอักษรจีน (UTF-8)
ป้อนข้อมูล: 你好
เอาท์พุต: %E4%BD%A0%E5%A5%BD
ถอดรหัสพารามิเตอร์การค้นหาที่เข้ารหัส
ป้อนข้อมูล: key%3Dvalue%26foo%3Dbar
เอาท์พุต: key=value&foo=bar
ปัญหาทั่วไป
- การเข้ารหัสสองครั้ง: การเข้ารหัสสตริงที่เข้ารหัสแล้วจะเปลี่ยน %20 เป็น %2520 ตรวจสอบเสมอว่าอินพุตได้รับการเข้ารหัสแล้วก่อนที่จะเข้ารหัสอีกครั้ง
- encodeURI ที่สับสนกับ encodeURIComponent: encodeURI จะเก็บอักขระที่สงวนไว้ เช่น /, ?, & ไม่เสียหายสำหรับ URLs แบบเต็ม ในขณะที่ encodeURIComponent จะเข้ารหัสทุกอย่างสำหรับค่าพารามิเตอร์การค้นหา
- การจัดการพื้นที่: %20 คือรูปแบบที่เข้ารหัสเปอร์เซ็นต์ + ใช้ได้เฉพาะในข้อมูลเนื้อหา application/x-www-form-urlencoded เท่านั้น ไม่ใช่ในพาธ URL หรือสตริงการสืบค้นต่อ RFC 3986
- การเข้ารหัสแบบเดิมที่ไม่ใช่ UTF-8: เบราว์เซอร์สมัยใหม่เข้ารหัสเป็น UTF-8 แต่ระบบเดิมอาจใช้ GBK หรือ Latin-1 ทำให้เกิด mojibake เมื่อถอดรหัสที่อีกด้านหนึ่ง
เคล็ดลับ
- ใช้ encodeURIComponent() สำหรับค่าพารามิเตอร์การค้นหาแต่ละรายการ และใช้ encodeURI() สำหรับ URLs ทั้งหมดที่มีรูปแบบถูกต้องแล้ว
- เมื่อสร้างสตริงข้อความค้นหา ให้เข้ารหัสค่าแต่ไม่ใช่ตัวคั่น = หรือ & — เข้ารหัสแต่ละค่าแยกกัน จากนั้นรวมเข้ากับ &
- ใช้เครื่องมือเข้ารหัสและถอดรหัส URL ของเราเพื่อแก้ไขข้อบกพร่องการเรียก API ที่ส่งคืนข้อผิดพลาด 400 รายการเนื่องจากสตริงการสืบค้นมีรูปแบบไม่ถูกต้อง
- ถอดรหัสทางฝั่งเซิร์ฟเวอร์โดยใช้การเข้ารหัสอักขระเดียวกัน (UTF-8) เสมอเพื่อหลีกเลี่ยงการโมจิเบค