HTML Entity Encoder & Decoder
Escape ข้อความให้ปลอดภัยสำหรับใส่ใน HTML หรือแปลง entity อย่าง & และ € กลับเป็นอักขระที่อ่านได้
ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด
วิธีใช้ HTML Entity Encoder / Decoder
- เลือก เข้ารหัส เพื่อ escape ข้อความ หรือ ถอดรหัส เพื่อแปลง entity กลับเป็นอักขระ
- เมื่อเข้ารหัส ให้เลือกอักขระที่จะ escape: เฉพาะอักขระพิเศษของ HTML รวมอักขระที่ไม่ใช่ ASCII ทั้งหมดด้วย หรือทุกอย่างยกเว้นตัวอักษรและตัวเลข
- เลือก named entity (
é), ฐานสิบ (é) หรือฐานสิบหก (é) - คัดลอกผลลัพธ์ เมื่อถอดรหัส entity ที่ไม่รู้จักจะถูกแสดงเป็นรายการเพื่อให้คุณหาคำที่พิมพ์ผิดได้
ทำไมต้อง escape HTML?
มีอักขระห้าตัวที่มีความหมายพิเศษใน HTML: & เริ่มต้น entity, < และ > กำหนดขอบเขตแท็ก และ " กับ ' ปิดค่า attribute หากแทรกข้อความจากผู้ใช้ที่มีอักขระเหล่านี้ลงในหน้าเว็บโดยไม่ escape อาจทำให้เลย์เอาต์พัง หรือแย่กว่านั้นคือถูกแทรกสคริปต์ (cross-site scripting, XSS) การ escape จะเปลี่ยนอักขระเหล่านี้เป็น &, <, >, " และ ' ซึ่งเบราว์เซอร์จะแสดงเป็นข้อความ
Entity แบบชื่อ ฐานสิบ และฐานสิบหก
อักขระ Unicode ทุกตัวเขียนเป็นการอ้างอิงตัวเลขได้: ฐานสิบ € หรือฐานสิบหก € สำหรับ € อักขระที่ใช้บ่อยหลายตัวยังมีชื่อที่อ่านง่าย เช่น €, © หรือ การอ้างอิงแบบตัวเลขใช้ได้ทุกที่ รวมถึง XML ซึ่งกำหนด named entity ไว้เพียงห้าตัว ส่วน named entity อ่านง่ายกว่าในซอร์สโค้ด
จำเป็นต้องเข้ารหัสอักขระที่ไม่ใช่ ASCII หรือไม่?
ไม่จำเป็นหากหน้าเว็บของคุณให้บริการเป็น UTF-8 ซึ่งเว็บไซต์สมัยใหม่เกือบทั้งหมดเป็นเช่นนั้น (<meta charset="utf-8">) อักขระอย่าง é, ü หรือ 日本 เขียนได้โดยตรง การเข้ารหัสจะมีประโยชน์สำหรับระบบเก่า เทมเพลตอีเมล หรือเมื่อ pipeline ทำให้ข้อความที่ไม่ใช่ ASCII เสียหาย
การ escape ขึ้นอยู่กับบริบท
การ escape แบบ HTML entity ปกป้องข้อความที่อยู่ในเนื้อหาของ element และ attribute ที่อยู่ในอัญประกาศ แต่ไม่เพียงพอสำหรับค่าภายในบล็อก <script>, inline event handler, CSS หรือ URL ซึ่งแต่ละแบบต้องใช้การเข้ารหัสของตัวเอง ควรใช้ auto-escaping ของเฟรมเวิร์ก (React, Vue, Jinja, Blade) แทนการต่อสตริงเอง
คำถามที่พบบ่อย
อักขระใดบ้างที่ต้อง escape ใน HTML?
& และ < เป็นสิ่งจำเป็น ในค่า attribute ให้ escape อัญประกาศที่คุณใช้ด้วย การ escape ทั้งห้าตัว (& < > " ') เป็นค่าเริ่มต้นที่ปลอดภัย&nbsp; คืออะไร?
ทำไม &copy2024 ถอดรหัสเป็น ©2024?
©, & และ < แม้ไม่มีเครื่องหมายอัฒภาคปิดท้าย ตัวถอดรหัสนี้ทำตามกฎเดียวกัน แต่ใน HTML ของคุณเองควรใส่อัฒภาคเสมออะพอสทรอฟีใช้ &apos; หรือ &#39;?
' ใช้ได้ใน HTML5 และ XML แต่ไม่ใช่ใน HTML 4 ดังนั้น ' หรือ ' แบบตัวเลขจึงเข้ากันได้ดีที่สุด และเป็นสิ่งที่ตัวเข้ารหัสนี้สร้างออกมา