tigtools

ตัวเข้ารหัส / ถอดรหัส URL

เข้ารหัสข้อความสำหรับใช้ใน URL หรือแปลง escape แบบ %20 กลับเป็นข้อความที่อ่านได้ เลือก Component สำหรับค่าเดียว หรือ Full URL สำหรับที่อยู่แบบเต็ม

ทำงานในเบราว์เซอร์ของคุณ ไม่ต้องสมัคร

ทิศทาง
คุณกำลังเข้ารหัสอะไร?

คอมโพเนนต์ (encodeURIComponent) จะเข้ารหัสทุกอย่างยกเว้นตัวอักษร ตัวเลข และ - _ . ! ~ * ' ( ) ใช้สำหรับค่าคิวรีหนึ่งค่า ฟิลด์ฟอร์ม หรือส่วนของพาธ

วิธีใช้งาน

  1. เลือกเข้ารหัสหรือถอดรหัส
  2. เลือก Component สำหรับค่าเดียว (เช่น พารามิเตอร์ query หนึ่งตัว) หรือ Full URL สำหรับ URL ทั้งหมด
  3. พิมพ์หรือวางข้อความของคุณ ผลลัพธ์จะปรากฏทันทีทางด้านขวา (หรือด้านล่างบนโทรศัพท์)
  4. คัดลอกผลลัพธ์ หรือใช้ “ใช้ผลลัพธ์เป็นอินพุต” เพื่อย้อนกลับการทำงานและตรวจสอบการแปลงไปกลับ

วิธีการทำงาน

URL มีชุดอักขระ ASCII ที่ใช้ได้จำกัดเท่านั้น อักขระอื่น ๆ เช่น ช่องว่าง ตัวอักษรที่มีเครื่องหมายวรรณยุกต์ และอิโมจิ จะถูกเขียนเป็นเปอร์เซ็นต์ escape: อักขระนั้นจะถูกแปลงเป็นไบต์ UTF-8 และแต่ละไบต์กลายเป็น % ตามด้วยเลขฐานสิบหกสองหลัก ช่องว่างกลายเป็น %20, é กลายเป็น %C3%A9 และ € กลายเป็น %E2%82%AC

โหมด Component ใช้ encodeURIComponent และ decodeURIComponent ของ JavaScript โดยจะ escape อักขระทุกตัวที่มีความหมายพิเศษใน URL รวมถึง / ? # & = + : และ @ เพื่อให้ผลลัพธ์สามารถวางไว้ในค่าคิวรีหรือส่วนของ path เพียงส่วนเดียวได้อย่างปลอดภัย โดยคงอักขระ A–Z, a–z, 0–9 และ - _ . ! ~ * ' ( ) ไว้เท่านั้น

โหมด Full URL ใช้ encodeURI และ decodeURI โดยถือว่าข้อมูลเข้าเป็น URL ที่สมบูรณ์แล้ว และคงอักขระสงวน ; , / ? : @ & = + $ # ไว้ จึงทำให้ที่อยู่ยังใช้งานได้ เมื่อถอดรหัส decodeURI จะไม่แตะ escape ของอักขระสงวนเหล่านั้น: %2F จะยังเป็น %2F เพราะหากเปลี่ยนเป็น / จะทำให้ความหมายของ URL เปลี่ยนไป

ตัวเลือก form-data เป็นไปตาม application/x-www-form-urlencoded ซึ่งเป็นรูปแบบที่เบราว์เซอร์ใช้เมื่อส่งฟอร์ม HTML: ช่องว่างเขียนเป็น + แทน %20 เมื่อถอดรหัสด้วยตัวเลือกนี้ เครื่องหมาย + ทุกตัวจะกลายเป็นช่องว่าง ส่วนเครื่องหมายบวกจริงต้องเขียนเป็น %2B

ข้อมูลที่ไม่ถูกต้องจะไม่ถูกทิ้ง หากมี % ที่ไม่ได้ตามด้วยเลขฐานสิบหกสองหลัก หรือลำดับ escape ไม่ได้ประกอบเป็น UTF-8 ที่ถูกต้อง เครื่องมือจะแสดงตำแหน่งปัญหาและเก็บข้อความเดิมไว้ให้คุณแก้ไข

ตัวอย่าง

การใส่ค่าลงในสตริงคิวรี

หากต้องการค้นหา “Rock & Roll” ที่ https://example.com/search?q=… ให้เข้ารหัสเฉพาะค่าในโหมด Component: Rock%20%26%20Roll หากไม่เข้ารหัส เครื่องหมาย & จะสิ้นสุดพารามิเตอร์ q และเริ่มพารามิเตอร์ใหม่ชื่อ “ Roll”

แก้ URL ที่มีช่องว่างและเครื่องหมายกำกับเสียง

ในโหมด Full URL https://example.com/menu/crème brûlée.html จะกลายเป็น https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html เครื่องหมายสแลชและโคลอนจะคงเดิม ลิงก์จึงยังใช้งานได้

อ่านข้อมูลฟอร์มจากบันทึก

บันทึกของเซิร์ฟเวอร์แสดง name=Jane+Doe&city=S%C3%A3o+Paulo ให้ถอดรหัสในโหมด Component โดยเปิดตัวเลือก “แปลง + เป็นช่องว่าง” จะอ่านได้เป็น name=Jane Doe&city=São Paulo

คำถามที่พบบ่อย

encodeURI กับ encodeURIComponent แตกต่างกันอย่างไร

encodeURIComponent จะ escape อักขระที่ใช้แบ่งส่วนต่าง ๆ ของ URL (/ ? # & = + : @ และอื่น ๆ) จึงเหมาะสำหรับข้อมูลเพียงส่วนเดียวของ URL ส่วน encodeURI จะคงอักขระเหล่านั้นไว้ จึงเหมาะสำหรับ URL ที่สมบูรณ์ การใช้ encodeURI กับค่าคิวรีเป็นข้อผิดพลาดที่พบบ่อย: เครื่องหมาย & หรือ = ภายในค่าจะไม่ถูก escape และจะทำให้ query string เสียหาย

ช่องว่างควรใช้ %20 หรือ +

ในพาธของ URL ช่องว่างจะเป็น %20 เสมอ ใน query string อาจพบทั้งสองรูปแบบ: %20 ใช้ได้ในทุกกรณี ส่วน + หมายถึงช่องว่างเฉพาะในข้อมูลที่เข้ารหัสแบบฟอร์ม (application/x-www-form-urlencoded) ซึ่งเป็นรูปแบบที่ฟอร์ม HTML และเฟรมเวิร์กฝั่งเซิร์ฟเวอร์จำนวนมากใช้อ่าน query string หากไม่แน่ใจให้ใช้ %20

ทำไมจึงเกิดข้อผิดพลาดเมื่อถอดรหัส

การถอดรหัสจะล้มเหลวเมื่อเครื่องหมาย % ไม่ได้ตามด้วยเลขฐานสิบหกสองหลัก (เช่น “50% off”) หรือเมื่อไบต์ที่ escape ไว้ไม่ใช่ UTF-8 ที่ถูกต้อง ซึ่งมักหมายความว่าข้อความถูกเข้ารหัสด้วยชุดอักขระรุ่นเก่า เช่น Latin-1 (é เป็น %E9 แทนที่จะเป็น %C3%A9) ข้อความแสดงข้อผิดพลาดจะระบุตำแหน่งของปัญหา

ทำไม %2F จึงไม่เปลี่ยนเป็นเครื่องหมายทับในโหมด Full URL

decodeURI จงใจคง escape ของอักขระสงวน เช่น / ? # & และ = ไว้ เนื่องจากการถอดรหัสอักขระเหล่านี้อาจทำให้การแบ่งส่วนของ URL เปลี่ยนไป ให้ใช้โหมด Component เพื่อถอดรหัส escape ทั้งหมด

อักขระใดบ้างที่ไม่ถูกเข้ารหัส

ทั้งสองโหมดจะคง A–Z, a–z, 0–9 และ - _ . ! ~ * ' ( ) ไว้เหมือนเดิม โหมด Full URL จะคง ; , / ? : @ & = + $ และ # ไว้เพิ่มเติม

ความเป็นส่วนตัว

การเข้ารหัสและถอดรหัสทำงานในเบราว์เซอร์ของคุณทั้งหมดด้วยฟังก์ชัน JavaScript ในตัว ข้อความและ URL ของคุณจะไม่ถูกอัปโหลด จัดเก็บ หรือรวมอยู่ในข้อมูลวิเคราะห์