Base64
Base64 Encoding คืออะไร?
Base64 คือวิธีเข้ารหัส (encoding) ข้อมูลแบบ binary ให้อยู่ในรูปแบบข้อความ ASCII โดยใช้อักขระ 64 ตัว ได้แก่ A-Z, a-z, 0-9, + และ / พร้อมเครื่องหมาย = สำหรับ padding ข้อมูลที่เข้ารหัสจะมีขนาดเพิ่มขึ้นประมาณ 33%
Base64 ถูกกำหนดไว้ใน RFC 4648 มักใช้ในการส่งข้อมูลผ่าน protocol ที่รองรับเฉพาะข้อความ เช่น อีเมล (MIME), Data URI ใน HTML/CSS, JSON Web Token (JWT) และ API ต่างๆ
URL Encode
เมื่อไรควรใช้ URL Encoding?
URL Encoding (หรือ Percent-encoding) จำเป็นเมื่อต้องส่งอักขระพิเศษหรืออักขระที่ไม่ใช่ ASCII ผ่าน URL:
- ส่งข้อมูลผ่าน query string เช่น ?search=สวัสดี จะเป็น ?search=%E0%B8%AA%E0%B8%A7%E0%B8%B1%E0%B8%AA%E0%B8%94%E0%B8%B5
- ส่งอักขระพิเศษ เช่น &, =, ?, # ที่มีความหมายพิเศษใน URL
- ส่งข้อมูลฟอร์มแบบ application/x-www-form-urlencoded
- สร้าง URL ที่มีช่องว่างหรืออักขระภาษาไทย
HTML Encode
HTML Encoding สำคัญอย่างไร?
HTML Encoding แปลงอักขระพิเศษให้เป็น HTML entities เพื่อแสดงผลอย่างถูกต้องในเว็บเพจ และป้องกันการโจมตีแบบ Cross-Site Scripting (XSS) อักขระที่ต้อง encode ได้แก่ & (ampersand), < (less-than), > (greater-than), " (double quote) และ ' (single quote)
< จะถูกแปลงเป็น < และ & จะถูกแปลงเป็น &
การใช้งานที่พบบ่อย
การใช้งานที่พบบ่อย
- Base64: ฝังรูปภาพใน HTML/CSS ด้วย Data URI (data:image/png;base64,...)
- Base64: เข้ารหัส credentials สำหรับ HTTP Basic Authentication
- Base64: เก็บข้อมูล binary ใน JSON หรือ XML
- URL Encode: ส่งพารามิเตอร์ที่มีอักขระพิเศษผ่าน URL
- URL Encode: สร้าง deep link สำหรับแอปมือถือ
- HTML Encode: แสดงโค้ด HTML บนหน้าเว็บอย่างปลอดภัย
- HTML Encode: ป้องกัน XSS attack ในข้อมูลที่รับจากผู้ใช้
เคล็ดลับ
เคล็ดลับการใช้งาน
- Base64 ไม่ใช่การเข้ารหัส (encryption) ข้อมูลสามารถถอดรหัสได้ง่าย ห้ามใช้เก็บข้อมูลที่เป็นความลับ
- URL Encoding ใช้ encodeURIComponent() สำหรับค่า parameter แต่ใช้ encodeURI() สำหรับ URL ทั้งหมด
- HTML Encoding ควรทำเสมอก่อนแสดงข้อมูลจากผู้ใช้บนเว็บเพจ
- เครื่องมือนี้รองรับ UTF-8 ทำให้แปลงข้อความภาษาไทยได้อย่างถูกต้อง
- ผลลัพธ์จะแปลงอัตโนมัติขณะพิมพ์ ไม่ต้องกดปุ่มแปลง
กรณีใช้งานจริง
กรณีใช้งานจริง
- แปลงรูปภาพเป็น Base64 Data URI เพื่อฝังใน HTML/CSS โดยไม่ต้อง request ไฟล์แยก
- Decode JWT token เพื่อดู payload ข้างในว่ามี claims อะไร โดยไม่ต้อง verify signature
- URL Encode พารามิเตอร์ภาษาไทยก่อนส่งผ่าน query string เพื่อป้องกันอักขระเพี้ยน
- HTML Encode โค้ดตัวอย่างก่อนแสดงบนบทความสอน เพื่อป้องกัน XSS และแสดง tag ได้ถูกต้อง
- แปลง Base64 encoded email attachment กลับเป็นข้อความเพื่ออ่านเนื้อหาที่ encode มา
หลีกเลี่ยง
ข้อผิดพลาดที่พบบ่อย
- ใช้ Base64 เพื่อ "เข้ารหัส" ข้อมูลลับ เช่น password หรือ API key ซึ่งไม่ปลอดภัยเพราะ decode กลับได้ทันที
- ใช้ encodeURI() แทน encodeURIComponent() สำหรับ query parameter ทำให้อักขระ & = ? ไม่ถูก encode
- ลืม decode URL ที่ encode ซ้อนกันหลายชั้น (%2520 แทน %20) ทำให้ server ตีความผิด
- ไม่ระบุ charset เป็น UTF-8 เมื่อ Base64 encode ข้อความภาษาไทย ทำให้ decode กลับมาเป็นอักขระเพี้ยน
เปรียบเทียบ
เปรียบเทียบกับเครื่องมืออื่น
เครื่องมือของเรารวม 3 encoding ไว้ในหน้าเดียว (Base64, URL Encode, HTML Encode) ต่างจากเว็บอื่นที่แยกเป็นคนละหน้า ทำให้สลับ mode ได้สะดวกโดยไม่ต้องเปิดหลาย tab
เมื่อเทียบกับ command-line เช่น base64 หรือ Python urllib.parse เครื่องมือนี้แปลงแบบ real-time ขณะพิมพ์ รองรับ UTF-8 ภาษาไทยโดย default และมีปุ่ม swap สลับ input/output ได้ทันที
เครื่องมือนี้ประมวลผลทั้งหมดบน browser ของคุณ ไม่มีข้อมูลถูกส่งไปยัง server แต่ไม่ควรใช้กับข้อมูลที่เป็นความลับสูง