§

ป้อนข้อความที่จะถอดรหัส:

ป้อนข้อความที่เข้ารหัส URL ที่คุณต้องการถอดรหัส เครื่องมือจะแปลงอักขระที่เข้ารหัสเปอร์เซ็นต์กลับเป็นรูปแบบเดิม
§

Output

decoded

ทีม growth ไทยถอด URL เพื่อตามรอย UTM ของ TikTok Ads บน GA4, backend ถอด webhook Shopee TH ที่ order_id เป็นข้อความไทย, ทีม security ถอด log WAF ของ TrueCloud หา injection ส่วน OAuth state ของ NDID และ KBank Open API ต้องถอดเพื่อ debug ทำงานในเบราว์เซอร์ สอดคล้อง PDPA

ตัวเลือกขั้นสูง

แปลง + เป็นช่องว่าง

เมื่อเปิดใช้งาน อักขระ + จะถูกแปลงเป็นช่องว่าง สิ่งนี้มีประโยชน์เมื่อถอดรหัสพารามิเตอร์การค้นหา

โหมดสด

เมื่อเปิดใช้งาน ข้อความจะถูกถอดรหัสโดยอัตโนมัติขณะที่คุณพิมพ์

ตัวเลือกเหล่านี้ช่วยให้คุณควบคุมวิธีการถอดรหัสอักขระที่เข้ารหัสใน URL ของคุณ

การถอดรหัส URL คืออะไร?

การถอดรหัส URL จะย้อนการเข้ารหัสเปอร์เซ็นต์: อ่านลำดับ %XX ใน URL ที่เข้ารหัสแล้วแปลงกลับเป็นอักขระที่แสดงถึง นั่นคือวิธีที่คุณได้รับ query string, ค่าฟอร์ม หรือ path segment ที่อ่านได้จาก URL ที่เบราว์เซอร์, API หรือ log line ส่งมาให้คุณในรูปแบบเข้ารหัส

การถอดรหัส URL ทำงานอย่างไร?

การถอดรหัส URL ทำตามกระบวนการเฉพาะเพื่อแปลงลำดับที่เข้ารหัสแบบเปอร์เซ็นต์กลับเป็นอักขระดั้งเดิม:

  1. สแกนสตริงอินพุตเพื่อหาลำดับ escape ที่เข้ารหัสแบบเปอร์เซ็นต์ (%XX)
  2. แต่ละ %XX จะถูกแปลงจากเลขฐานสิบหกสองหลักกลับเป็นค่าไบต์ดั้งเดิม
  3. ไบต์ที่ถอดรหัสต่อเนื่องกันจะถูกประกอบกลับเป็นอักขระ UTF-8 (ลำดับหลายไบต์จะกลายเป็นอักขระเดียว)
  4. ในบริบทของสตริงการค้นหา + จะถูกถอดรหัสเป็นช่องว่าง (application/x-www-form-urlencoded) ในขณะที่ %2B ยังคงเป็น + ตามตัวอักษร
  5. อักขระที่ไม่สงวนและข้อความที่ถอดรหัสแล้วจะผ่านไปโดยไม่เปลี่ยนแปลง

ทำไมจึงใช้ตัวถอดรหัส URL?

  • ผลลัพธ์ที่อ่านได้: แปลง %20, %40 และ %3D กลับเป็นช่องว่าง, @ และ = เพื่อให้คุณอ่านสิ่งที่ URL บอกได้จริง ๆ
  • ข้อความนานาชาติ: สร้างอักขระที่มีสำเนียงและ non-ASCII กลับจากลำดับ byte UTF-8 ของพวกมัน เพื่อให้ %C3%A9 อ่านเป็น é อีกครั้ง
  • การดีบัก: ตรวจสอบค่าจริงใน query string, OAuth redirect หรือ webhook payload ก่อนที่คุณจะดำเนินการ
  • ถูกต้องตามมาตรฐาน: ถอดรหัสตาม RFC 3986 กฎเดียวกับที่เบราว์เซอร์และเซิร์ฟเวอร์ใช้ เพื่อให้คุณเห็นสิ่งที่พวกมันเห็น

การใช้งานทั่วไปของการถอดรหัส URL มีอะไรบ้าง?

การถอดรหัส URL จำเป็นในหลายสถานการณ์การพัฒนาเว็บ:

  • การส่งฟอร์ม: อ่านค่าฟิลด์เดิมกลับมาจากข้อมูล application/x-www-form-urlencoded ทั้ง GET และ POST
  • การพัฒนา API: แกะ path และ query parameters ที่ถูกเข้ารหัสแบบเปอร์เซ็นต์ที่มาถึง API endpoint
  • ระบบไฟล์: กู้คืนเส้นทางและชื่อไฟล์ที่ถูกเข้ารหัสแบบเปอร์เซ็นต์เพื่อส่งผ่าน URL
  • การดีบักลิงก์: ถอดรหัส URL ที่แชร์หรือบันทึกไว้เพื่อดูอักขระพิเศษและข้อความระหว่างประเทศที่พวกมันมี

ตัวอย่างการถอดรหัส URL มีลักษณะอย่างไร?

ต่อไปนี้คือตัวอย่างทั่วไปของการถอดรหัส URL: %20 (หรือ +) กลายเป็นช่องว่าง, %40 กลายเป็น @, %23 กลายเป็น #, %26 กลายเป็น & และ %3D กลายเป็น = ลำดับ UTF-8 อย่าง %C3%A9 กลายเป็นอักขระระหว่างประเทศ é

การเข้ารหัสแบบเปอร์เซ็นต์คืออะไร?

การเข้ารหัสแบบเปอร์เซ็นต์คือกลไกที่กำหนดโดย RFC 3986 §2.1 สำหรับแสดงอักขระที่ไม่ปลอดภัยหรือเป็นอักขระสงวนภายใน URI กฎเป็นแบบกลไก: ทุกไบต์ที่ไม่สามารถปรากฏตามตัวอักษรได้ จะถูกเขียนเป็นเครื่องหมายเปอร์เซ็นต์ตามด้วยเลขฐานสิบหกสองหลัก — รูป %XX — โดย XX คือค่าของไบต์ อักขระที่ไม่ใช่ ASCII เช่น é จะถูกเข้ารหัสเป็นลำดับไบต์ UTF-8 ก่อน จากนั้นไบต์แต่ละไบต์จะถูกเข้ารหัสแบบเปอร์เซ็นต์ทีละตัว นักพัฒนาพบสิ่งนี้แทบทุกวัน: ใน query string, การส่งฟอร์ม, URL callback ของ OAuth, พารามิเตอร์ path ของ REST API, และทุกที่ที่ URL ต้องนำพาเครื่องหมายวรรคตอน เว้นวรรค หรืออักขระนอกเซตที่ไม่สงวน A–Z a–z 0–9 - _ . ~

การถอดรหัส %C3%A9 ให้กลายเป็น é ทำงานอย่างไรกันแน่?

ลองดู query string ที่เข้ารหัสไว้ ?q=caf%C3%A9&lang=fr การถอดรหัสจะได้ ?q=café&lang=fr นี่คือคำอธิบายไบต์ต่อไบต์:

  • อินพุต: ?q=caf%C3%A9&lang=fr
  • เอาต์พุต: ?q=café&lang=fr
  1. %C3 → ไบต์ 0xC3 (เลขฐานสอง 11000011) — ไบต์นำของลำดับ UTF-8 ขนาด 2 ไบต์
  2. %A9 → ไบต์ 0xA9 (เลขฐานสอง 10101001) — ไบต์ต่อเนื่อง รวมกันแล้ว C3 A9 คือการเข้ารหัส UTF-8 ของ U+00E9 ซึ่งก็คือ é
  3. อักขระ ?, = และ & ถูกปล่อยไว้คงเดิม เพราะเป็นอักขระเชิงโครงสร้าง — มันคั่น query และคู่ key/value ส่วน caf ตามตัวอักษรก็ผ่านไปโดยไม่เปลี่ยน เพราะตัวอักษร ASCII ตัวพิมพ์เล็กอยู่ในเซตที่ไม่สงวน

decodeURIComponent กับ decodeURI ต่างกันอย่างไร?

JavaScript มีตัวถอดรหัส built-in สองตัว และการสับสนระหว่างทั้งสองคือบักการจัดการ URL ที่พบบ่อยที่สุดอย่างหนึ่ง:

  • decodeURIComponent(str) ถอดรหัสทุกลำดับที่เข้ารหัสแบบเปอร์เซ็นต์ รวมถึงอักขระสงวนอย่าง &, =, ?, / และ # ใช้กับค่าเดี่ยว ๆ ของ query string หรือ segment ของ path เท่านั้น — อย่าใช้กับ URL ทั้งก้อนเด็ดขาด
  • decodeURI(str) ระมัดระวังโดยตั้งใจ: มันข้ามอักขระสงวน ส่งให้มัน %26 จะได้สตริงตามตัวอักษร %26 กลับมา ไม่ใช่ & มันมีไว้สำหรับ URI ทั้งก้อนที่คุณต้องการให้โครงสร้างอยู่รอดในการเดินทางไป-กลับ

กฎจากประสบการณ์: ถ้าสตริงเป็นแค่ส่วนหนึ่งของ URL (พารามิเตอร์เดี่ยว, fragment, ชื่อไฟล์ที่เข้ารหัส) ให้ใช้ decodeURIComponent เครื่องมือนี้ทำงานเหมือน decodeURIComponent — ทุกลำดับ %XX ในอินพุตของคุณจะถูกถอดรหัส รวมถึงอักขระสงวน

การถอดรหัส URL คือวิธีที่คุณอ่านสิ่งที่มันมีจริง ๆ วาง encoded string ด้านบนแล้วลำดับ %XX ทุกตัวจะกลับเป็นอักขระของมันในเบราว์เซอร์ของคุณ เพื่อให้คุณดีบัก query parameter, ตรวจสอบ OAuth redirect หรือกู้คืนชื่อไฟล์ที่มีสำเนียงโดยไม่ต้องส่งอะไรไปยังเซิร์ฟเวอร์