ฉันจะเสนอทางเลือกที่แปลก บางครั้งการใช้การเข้ารหัสที่แตกต่างกันทำได้ง่ายกว่าโดยเฉพาะอย่างยิ่งหากคุณกำลังจัดการกับระบบต่างๆที่ไม่ได้จัดการรายละเอียดของการเข้ารหัส URL ด้วยวิธีเดียวกันทั้งหมด นี่ไม่ใช่แนวทางหลักที่สุด แต่อาจมีประโยชน์ในบางสถานการณ์
แทนที่จะเข้ารหัส URL ข้อมูลคุณสามารถเข้ารหัส base64 ได้ ข้อดีของสิ่งนี้คือข้อมูลที่เข้ารหัสเป็นข้อมูลทั่วไปซึ่งประกอบด้วยอักขระอัลฟาและบางครั้งต่อท้าย=
's ตัวอย่าง:
อาร์เรย์ของสตริง JSON:
["option", "Fred's dog", "Bill & Trudy", "param=3"]
ข้อมูลนั้นเข้ารหัส URL เป็นdata
พารามิเตอร์:
"data=%5B%27option%27%2C+%22Fred%27s+dog%22%2C+%27Bill+%26+Trudy%27%2C+%27param%3D3%27%5D"
เหมือนกันเข้ารหัส base64:
"data=WyJvcHRpb24iLCAiRnJlZCdzIGRvZyIsICJCaWxsICYgVHJ1ZHkiLCAicGFyYW09MyJd"
วิธีการ base64 อาจสั้นกว่าเล็กน้อย แต่ที่สำคัญกว่านั้นคือง่ายกว่า ฉันมักมีปัญหาในการย้ายข้อมูลที่เข้ารหัส URL ระหว่าง cURL เว็บเบราว์เซอร์และไคลเอนต์อื่น ๆ ซึ่งมักเกิดจากเครื่องหมายคำพูดเครื่องหมายฝัง%
และอื่น ๆ Base64 เป็นกลางมากเนื่องจากไม่ใช้อักขระพิเศษ