IS
ISSARAPONG
Utility
🇹🇭 ภาษาไทย

คู่มือ URL Encoding และ Decoding

คู่มือปฏิบัติเกี่ยวกับ URL encoding (percent encoding) ว่าทำไมจึงจำเป็น และวิธีการเข้ารหัสและถอดรหัส URL อย่างถูกต้องในการพัฒนาเว็บ

Issarapong15 เมษายน 25672 นาที

คู่มือ URL Encoding และ Decoding

URL encoding หรือที่รู้จักกันในชื่อ percent encoding เป็นกลไกสำหรับการเข้ารหัสข้อมูลใน Uniform Resource Identifier (URI) ในบางสถานการณ์ เป็นแนวคิดพื้นฐานในการพัฒนาเว็บที่นักพัฒนาทุกคนควรเข้าใจ

ทำไมต้องใช้ URL Encoding?

URL สามารถส่งผ่านอินเทอร์เน็ตได้เฉพาะโดยใช้ชุดอักขระ ASCII เท่านั้น เนื่องจาก URL มักมีอักขระนอกชุดนี้ จึงต้องเข้ารหัสก่อน นอกจากนี้ อักขระ ASCII บางตัวมีความหมายพิเศษใน URL และต้องเข้ารหัสเมื่อใช้เป็นข้อมูล

อักขระพิเศษ (Reserved Characters)

อักขระเหล่านี้มีความหมายพิเศษใน URL และต้องเข้ารหัสเมื่อใช้เป็นข้อมูล:

อักขระรหัสความหมายใน URL
&%26ตัวคั่น query string
=%3Dตัวคั่น key-value
?%3Fเริ่มต้น query string
#%23Fragment identifier
/%2Fตัวคั่น path
%20 หรือ +เว้นวรรค

วิธีการทำงานของ Percent Encoding

อักขระที่เข้ารหัสด้วย percent คือ % ตามด้วยตัวเลข hexadecimal 2 ตัว:

เว้นวรรค → %20
A → %41
! → %21

การเข้ารหัสในภาษาต่างๆ

JavaScript

// เข้ารหัส URI component (สำหรับค่า query)
encodeURIComponent("สวัสดีชาวโลก & มากกว่านั้น!")
// ผลลัพธ์: "%E0%B8%AA%E0%B8%A7%E0%B8%B1%E0%B8%AA%E0%B8%94%E0%B8%B5..."

// ถอดรหัส
decodeURIComponent("%E0%B8%AA%E0%B8%A7%E0%B8%B1%E0%B8%AA%E0%B8%94%E0%B8%B5")
// ผลลัพธ์: "สวัสดี"

Python

from urllib.parse import quote, unquote, urlencode

# เข้ารหัส
encoded = quote("สวัสดีชาวโลก!")
print(encoded)

# ถอดรหัส
decoded = unquote(encoded)
print(decoded)  # สวัสดีชาวโลก!

# เข้ารหัส query parameters
params = {'q': 'สวัสดี', 'page': 1}
encoded_params = urlencode(params)
print(encoded_params)

ข้อผิดพลาดที่พบบ่อย

Double Encoding

หลีกเลี่ยงการเข้ารหัส URL ที่เข้ารหัสแล้ว:

// ผิด - เข้ารหัสซ้ำซ้อน
const url = encodeURIComponent(encodeURIComponent("สวัสดี"));
// ผลลัพธ์: "สวัสดี" ที่เข้ารหัสผิด

// ถูก - เข้ารหัสครั้งเดียว
const url = encodeURIComponent("สวัสดี");

ใช้ฟังก์ชันการเข้ารหัสที่ถูกต้อง

  • ใช้ encodeURIComponent() สำหรับค่า query parameter แต่ละตัว
  • ใช้ encodeURI() สำหรับ URL ทั้งหมด
  • อย่าใช้ escape() (deprecated แล้ว)

ลองใช้งานได้เลย

ใช้ เครื่องมือ URL Encoder/Decoder ของเราเพื่อเข้ารหัสและถอดรหัส URL ได้ทันทีในเบราว์เซอร์

เครื่องมือที่เกี่ยวข้อง

  • Base64 Encoder — เข้ารหัสและถอดรหัสสตริง Base64
  • HTML Encoder — เข้ารหัสอักขระพิเศษ HTML
  • API Client — ทดสอบ API ด้วย URL parameters