ข้ามไปยังเนื้อหา

เครื่องมือเข้ารหัส URL: เข้ารหัสอักขระพิเศษในลิงก์ URL ออนไลน์ฟรี

เครื่องมือเข้ารหัสสตริง URL ฟรีเพื่อเข้ารหัสอักขระพิเศษทันที แปลงช่องว่าง Unicode และสัญลักษณ์เป็นรูปแบบเปอร์เซ็นต์เข้ารหัส เหมาะสำหรับ API แบบฟอร์มเว็บ และ URL นานาชาติ ลองเลยตอนนี้!

เครื่องมือเข้ารหัสสตริง URL

เครื่องคำนวณโหลด...
📚

เอกสารประกอบการใช้งาน

การเข้ารหัส URL: คืออะไรและทำงานอย่างไร

การเข้ารหัส URL หรือที่เรียกว่าการเข้ารหัสแบบเปอร์เซ็นต์ เป็นวิธีแสดงอักขระในที่อยู่เว็บโดยใช้เฉพาะชุดอักขระ ASCII ที่ปลอดภัยขนาดเล็ก วิธีนี้ทำงานโดยแทนที่อักขระที่ไม่ปลอดภัยด้วยเครื่องหมาย % ตามด้วยเลขฐานสิบหกสองหลัก เครื่องมือหลีกอักขระสตริง URL นี้เข้ารหัสข้อความในลักษณะเดียวกับฟังก์ชัน encodeURIComponent ในตัวของ JavaScript

เหตุใด URL จึงต้องเข้ารหัส

URL อนุญาตให้มีอักขระได้เพียงชุดจำกัด ได้แก่ ตัวอักษร ตัวเลข และเครื่องหมายวรรคตอนจำนวนหนึ่ง ช่องว่าง ตัวอักษรที่มีเครื่องหมายกำกับ อักขระจากอักษรที่ไม่ใช่ละติน และสัญลักษณ์อย่าง & หรือ = อาจทำให้ URL ใช้งานไม่ได้หรือเปลี่ยนความหมาย หากปรากฏใน URL โดยไม่เข้ารหัส ตัวอย่างเช่น ช่องว่างภายในลิงก์อาจทำให้เบราว์เซอร์หรือเซิร์ฟเวอร์อ่าน URL เป็นสองส่วนแยกกัน การเข้ารหัสแบบเปอร์เซ็นต์จะแทนที่อักขระเหล่านี้ด้วยรหัสที่เบราว์เซอร์และเซิร์ฟเวอร์ทุกแห่งอ่านได้เหมือนกัน

อักขระที่เครื่องมือนี้ไม่เปลี่ยนแปลง

เครื่องมือนี้จะไม่แตะต้องอักขระต่อไปนี้ อักขระเหล่านี้จะถูกส่งผ่านไปโดยตรง:

  • ตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก: A–Z, a–z
  • ตัวเลข: 0–9
  • เครื่องหมายวรรคตอน - . _ ~ ! * ' ( )

อักขระอื่นทุกตัวจะถูกเข้ารหัสแบบเปอร์เซ็นต์ ได้แก่:

  • อักขระช่องว่างและเครื่องหมายวรรคตอน เช่น : / ? # [ ] @ $ & + , ; =
  • ตัวอักษรที่มีเครื่องหมายกำกับและอักขระอื่นใดที่ไม่ใช่ ASCII หรือเป็น Unicode
  • อักขระ % ตามตัวอักษรเอง ซึ่งจะกลายเป็น %25 เสมอ แม้เดิมจะเป็นส่วนหนึ่งของลำดับที่เข้ารหัสแบบเปอร์เซ็นต์อยู่แล้ว

คู่มือไวยากรณ์ URL ทั่วไปบางฉบับจัดกลุ่ม ! * ' ( และ ) ไว้กับเครื่องหมายวรรคตอนอื่น ๆ ในฐานะอักขระที่ “อาจต้องเข้ารหัส” ในบางบริบท เครื่องมือเฉพาะนี้จะไม่เข้ารหัสอักขระเหล่านี้ เพราะใช้ชุดกฎของ encodeURIComponent ซึ่งถือว่าอักขระเหล่านี้ปลอดภัย

วิธีคำนวณสตริงที่เข้ารหัสแบบเปอร์เซ็นต์ (สูตร)

เครื่องมือจะตรวจสอบอักขระแต่ละตัวของข้อมูลนำเข้าทีละตัว แล้วใช้กฎต่อไปนี้:

  1. หากอักขระนั้นอยู่ในกลุ่มอักขระที่ไม่เปลี่ยนแปลงตามที่ระบุไว้ข้างต้น ให้คงอักขระนั้นไว้ตามเดิม
  2. มิฉะนั้น ให้แปลงอักขระนั้นเป็นลำดับไบต์แบบ UTF-8 ตัวอักษรละตินที่มีเครื่องหมายกำกับ ตัวอักษรกรีก ซีริลลิก และอาหรับใช้สองไบต์ ส่วนอักขระจีน ญี่ปุ่น และเกาหลีใช้สามไบต์ อีโมจิใช้สี่ไบต์
  3. เขียนไบต์แต่ละตัวเป็นเลขฐานสิบหกสองหลัก
  4. ใส่ % ไว้หน้าเลขฐานสิบหกแต่ละคู่
  5. นำผลลัพธ์มาต่อกันตามลำดับเพื่อสร้างสตริงที่เข้ารหัส

ตัวอย่างพร้อมวิธีทำ

ข้อมูลนำเข้า: Jürgen & Björk

การประมวลผลทีละอักขระ:

อักขระผลลัพธ์
JJ (ไม่เปลี่ยนแปลง)
ü%C3%BC (ไบต์ UTF-8 0xC3, 0xBC)
rgenrgen (ไม่เปลี่ยนแปลง)
(ช่องว่าง)%20
&%26
(ช่องว่าง)%20
BjBj (ไม่เปลี่ยนแปลง)
ö%C3%B6 (ไบต์ UTF-8 0xC3, 0xB6)
rkrk (ไม่เปลี่ยนแปลง)

ผลลัพธ์: J%C3%BCrgen%20%26%20Bj%C3%B6rk

ตัวอย่างที่สองแสดงการทำงานของชุดอักขระที่ไม่เปลี่ยนแปลง การเข้ารหัสสตริง -_.!~*'() จะได้ -_.!~*'() ซึ่งเป็นข้อความเดิมทุกประการ เพราะอักขระทุกตัวอยู่ในกลุ่มอักขระที่ไม่ต้องเข้ารหัส การเข้ารหัสสตริง 100% จะได้ 100%25 เพราะเครื่องหมาย % เองไม่ใช่อักขระที่ปลอดภัย

การถอดรหัสสตริงที่เข้ารหัสแบบเปอร์เซ็นต์

การถอดรหัสเป็นกระบวนการย้อนกลับ แต่ละลำดับ %XX จะถูกอ่านเป็นไบต์ฐานสิบหก จากนั้นจึงจัดกลุ่มไบต์กลับเป็นอักขระ UTF-8 เดิม และแทนที่ลำดับดังกล่าวด้วยอักขระนั้น ตัวอย่างเช่น %C3%BC จะถูกถอดรหัสกลับเป็น ü และ %20 จะถูกถอดรหัสกลับเป็นช่องว่าง เครื่องมือนี้เข้ารหัสได้เท่านั้น หากต้องการย้อนกระบวนการต้องใช้เครื่องมือถอดรหัสแยกต่างหาก

การใช้งานทั่วไป

การเข้ารหัสแบบเปอร์เซ็นต์ใช้เมื่อใดก็ตามที่ข้อความซึ่งผู้ใช้พิมพ์เอง ไม่ใช่ข้อความที่โปรแกรมเมอร์เขียนไว้ ต้องกลายเป็นส่วนหนึ่งของ URL:

  • ช่องค้นหาที่นำคำค้นไปใส่ในแถบที่อยู่ เช่น ?q=shoes%20%26%20bags
  • พารามิเตอร์คำค้นที่เก็บชื่อ ที่อยู่ หรือข้อมูลผู้ใช้อื่น ๆ
  • ลิงก์ไปยังหน้าที่มีชื่อเรื่องเป็นภาษาซึ่งใช้อักษรที่มีเครื่องหมายกำกับหรืออักษรที่ไม่ใช่ละติน
  • คำขอ API ที่ส่งโทเค็นหรือตัวระบุเป็นส่วนหนึ่งของ URL

ตัวอย่างโค้ด

1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
4

quote ของ Python จะคงตัวอักษร ตัวเลข และ - . _ ~ ไว้เสมอ อักขระเพิ่มเติมอีกห้า ตัว ได้แก่ ! * ' ( ) ต้องระบุไว้ใน safe จึงจะตรงกับเครื่องมือนี้ หากไม่มี อักขระเหล่านี้ quote จะคืนค่าเป็น %21 %2A %27 %28 %29 แทน

ความเป็นมา

แนวคิดเรื่องการเข้ารหัสอักขระที่ไม่ปลอดภัยใน URL ย้อนไปถึง RFC 1738 ในปี (4,410 ซม.) 1994 ซึ่งเป็นเอกสารฉบับแรก ๆ ที่กำหนดรูปแบบ URL ต่อมา RFC 3986 ซึ่งเผยแพร่ในปี 2005 ได้ปรับปรุงกฎและกำหนดอย่างเป็นทางการถึงกลุ่มอักขระ “ที่ไม่ต้องเข้ารหัส” encodeURIComponent ซึ่งเป็นฟังก์ชัน JavaScript ที่เครื่องมือนี้ใช้ ยึดตามกลุ่มอักขระที่ไม่ต้องเข้ารหัสซึ่งกว้างกว่า RFC 3986 เล็กน้อย โดยยังคง ! * ' ( และ ) ไว้โดยไม่เข้ารหัส ตามข้อกำหนด URI ฉบับก่อนหน้า

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

การเข้ารหัส URL กับการหลีกอักขระใน URL แตกต่างกันอย่างไร ทั้งสองคำหมายถึงสิ่งเดียวกัน กล่าวคือการเข้ารหัสแบบเปอร์เซ็นต์ ซึ่งแทนที่อักขระด้วย % ตามด้วยเลขฐานสิบหกสองหลัก

เหตุใด !, *, ', ( และ ) จึงไม่เปลี่ยนแปลงในเครื่องมือนี้ เครื่องมือนี้ใช้ encodeURIComponent ซึ่งถือว่าอักขระทั้งห้าตัวนี้ปลอดภัยและคงไว้ตรงตามที่พิมพ์ ฟังก์ชันเข้ารหัสอื่นและเซิร์ฟเวอร์บางแห่งอาจยังคาดหมายให้อักขระเหล่านี้ถูกเข้ารหัส ดังนั้นควรตรวจสอบระบบปลายทางหากเกิดปัญหา

%20 กับ + สำหรับช่องว่างแตกต่างกันอย่างไร ทั้งสองใช้แทนช่องว่าง %20 คือการเข้ารหัสแบบเปอร์เซ็นต์ทั่วไปสำหรับช่องว่าง ส่วนเครื่องหมาย + เป็นกรณีพิเศษที่ใช้เฉพาะภายในข้อมูล application/x-www-form-urlencoded ซึ่งเป็นรูปแบบที่ใช้ในการส่งแบบฟอร์ม HTML ไม่ใช่โดยเครื่องมือนี้

เครื่องมือนี้ถอดรหัสข้อความที่เข้ารหัสไว้แล้วหรือไม่ ไม่ เครื่องมือนี้เข้ารหัสได้เท่านั้น หากข้อมูลนำเข้ามีเครื่องหมาย % อยู่แล้ว เครื่องหมาย % นั้นจะถูกถือเป็นอักขระตามตัวอักษรและกลายเป็น %25 ในผลลัพธ์ แทนที่จะคงไว้ตามเดิม

อักขระที่ไม่ใช่ละติน เช่น ข้อความภาษาจีนหรืออาหรับ ได้รับการจัดการอย่างไร อักขระแต่ละตัวจะถูกแปลงเป็นลำดับไบต์ UTF-8 ก่อน จากนั้นไบต์ทุกตัวจะถูกเข้ารหัสแบบเปอร์เซ็นต์ อักขระจีนหนึ่งตัวใช้สามไบต์ จึงให้ผลเป็นกลุ่ม %XX สามกลุ่ม ตัวอักษรอาหรับหนึ่งตัวใช้สองไบต์ จึงให้ผลเป็นสองกลุ่ม

เครื่องมือจะปฏิเสธการเข้ารหัสข้อความเมื่อใด เฉพาะเมื่อข้อความมีครึ่งหนึ่งของคู่ surrogate คู่ surrogate คือรหัสสองส่วนที่ใช้เก็บอักขระซึ่งมีค่ามากกว่า U+FFFF เช่น อีโมจิ ครึ่งหนึ่งที่อยู่เดี่ยว ๆ ไม่มีรูปแบบ UTF-8 ที่ถูกต้อง เครื่องมือจึงแสดงข้อผิดพลาดแทนผลลัพธ์ การพิมพ์ตามปกติไม่สามารถสร้างกรณีนี้ได้ โดยทั่วไปมักเกิดจากการคัดลอกข้อมูลที่ถูกตัดทอนหรือลิงก์ที่เสียหาย

ควรเข้ารหัส URL ทั้งหมดหรือเพียงบางส่วน ให้เข้ารหัสเฉพาะส่วนที่เก็บข้อมูลผู้ใช้ เช่น ค่าคำค้นหรือส่วนของเส้นทาง ไม่ใช่ส่วนที่ประกอบเป็นโครงสร้างของ URL เช่น https:// และชื่อโดเมน การเข้ารหัส URL ทั้งหมดด้วยตัวเข้ารหัสส่วนประกอบจะเปลี่ยนอักขระ :, / และ ? ให้เป็นรหัสเปอร์เซ็นต์ด้วย ทำให้ที่อยู่นั้นใช้งานไม่ได้

เอกสารอ้างอิง

  1. RFC 3986 — ตัวระบุทรัพยากรแบบเดียวกัน (URI): ไวยากรณ์ทั่วไป
  2. การเข้ารหัสแบบเปอร์เซ็นต์ — Wikipedia
  3. MDN — encodeURIComponent()
  4. มาตรฐาน URL — WHATWG