เครื่องมือนี้ทำอะไร
การเข้ารหัส URL หรือที่เรียกว่า percent-encoding คือการแทนที่อักขระที่ไม่อนุญาตหรือมีความหมายพิเศษใน URL ด้วย % ตามด้วยเลขฐานสิบหกสองหลัก ช่องว่างกลายเป็น %20 เครื่องหมาย & กลายเป็น %26 และข้อความที่ไม่ใช่ ASCII เช่น 中文 จะถูกแปลงเป็นไบต์ UTF-8 ก่อน แล้วแต่ละไบต์จึงถูกเขียนเป็น %XX
เครื่องมือนี้เข้ารหัสข้อความเพื่อให้ใส่ใน query string, path segment หรือคำขอ API ได้อย่างปลอดภัย และถอดรหัสสตริงที่เข้ารหัสแบบ percent ซึ่งคุณคัดลอกมาจาก log แถบที่อยู่ของเบราว์เซอร์ หรือ HTTP trace กลับเป็นข้อความที่อ่านได้
วิธีใช้งาน
- วางข้อความหรือ URL ลงในช่อง อินพุต หรือคลิก ตัวอย่าง
- เลือก เข้ารหัส หรือ ถอดรหัส
- ขณะเข้ารหัส เลือก Component เพื่อเข้ารหัสค่าเดียว (เช่น คำค้นหา) หรือ URL เต็ม เพื่อคง
:,/,?,&และ=ไว้ - เปิด ช่องว่างเป็น + สำหรับข้อมูลฟอร์ม HTML และ แยกทีละบรรทัด เพื่อประมวลผลรายการค่าหลายค่าในครั้งเดียว
- คัดลอกหรือดาวน์โหลดผลลัพธ์ หากถอดรหัสไม่สำเร็จ ข้อความแจ้งข้อผิดพลาดจะบอกตำแหน่งของ escape sequence ที่เสีย
ตัวอย่าง
การเข้ารหัสคำค้นหา hello world & more แบบ component จะได้:
hello%20world%20%26%20more
การถอดรหัส q=%E4%BD%A0%E5%A5%BD จะได้ q=你好
ควรใช้แบบไหนเมื่อไร
- สร้าง query string ด้วยมือ: เข้ารหัสแต่ละ ค่า แบบ component แล้วเชื่อมด้วย
&และ= - ทำความสะอาดลิงก์เต็มที่มีช่องว่างหรืออักษรจีน: ใช้ URL เต็ม เพื่อคงโครงสร้างของลิงก์ไว้
- อ่าน log ของเซิร์ฟเวอร์: ถอดรหัสโดยเปิด ช่องว่างเป็น + เพราะเซิร์ฟเวอร์จำนวนมากบันทึกข้อมูลฟอร์มในรูปแบบนั้น
คำถามที่พบบ่อย
› "Component" กับ "URL เต็ม" ต่างกันอย่างไร?
Component เข้ารหัสอักขระสงวนทุกตัว รวมถึง / ? & = และ # ผลลัพธ์จึงปลอดภัยเมื่ออยู่ภายใน query parameter หรือ path segment เดียว ตรงกับ encodeURIComponent ของ JavaScript ส่วน URL เต็ม จะคงอักขระเหล่านั้นไว้เพื่อให้ที่อยู่ยังใช้เป็นลิงก์ได้ ตรงกับ encodeURI
› ช่องว่างควรเป็น %20 หรือ +?
ใช้ %20 สำหรับ path และ API ส่วนใหญ่ ใช้ + เฉพาะกับข้อมูลฟอร์ม HTML (application/x-www-form-urlencoded) ซึ่งเป็นสิ่งที่เบราว์เซอร์ส่งเมื่อกดส่งฟอร์ม เปิด "ช่องว่างเป็น +" สำหรับกรณีนี้
› ทำไมจึงได้ "not valid UTF-8" ขณะถอดรหัส?
ไบต์ %XX ไม่ได้ประกอบกันเป็นอักขระ UTF-8 ที่สมบูรณ์ ส่วนใหญ่เป็นเพราะข้อความถูกตัดกลางอักขระหลายไบต์ หรือถูกเข้ารหัสด้วยชุดอักขระแบบเก่า เช่น GBK หรือ Latin-1
› ข้อมูลของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ การเข้ารหัสและถอดรหัสทำงานในเบราว์เซอร์ของคุณทั้งหมด