HTML Entity Encoder & Decoder

Escape ข้อความให้ปลอดภัยสำหรับใส่ใน HTML หรือแปลง entity อย่าง & และ € กลับเป็นอักขระที่อ่านได้

ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด

เข้ารหัสแล้ว

วิธีใช้ HTML Entity Encoder / Decoder

  1. เลือก เข้ารหัส เพื่อ escape ข้อความ หรือ ถอดรหัส เพื่อแปลง entity กลับเป็นอักขระ
  2. เมื่อเข้ารหัส ให้เลือกอักขระที่จะ escape: เฉพาะอักขระพิเศษของ HTML รวมอักขระที่ไม่ใช่ ASCII ทั้งหมดด้วย หรือทุกอย่างยกเว้นตัวอักษรและตัวเลข
  3. เลือก named entity (é), ฐานสิบ (é) หรือฐานสิบหก (é)
  4. คัดลอกผลลัพธ์ เมื่อถอดรหัส entity ที่ไม่รู้จักจะถูกแสดงเป็นรายการเพื่อให้คุณหาคำที่พิมพ์ผิดได้

ทำไมต้อง escape HTML?

มีอักขระห้าตัวที่มีความหมายพิเศษใน HTML: & เริ่มต้น entity, < และ > กำหนดขอบเขตแท็ก และ " กับ ' ปิดค่า attribute หากแทรกข้อความจากผู้ใช้ที่มีอักขระเหล่านี้ลงในหน้าเว็บโดยไม่ escape อาจทำให้เลย์เอาต์พัง หรือแย่กว่านั้นคือถูกแทรกสคริปต์ (cross-site scripting, XSS) การ escape จะเปลี่ยนอักขระเหล่านี้เป็น &amp;, &lt;, &gt;, &quot; และ &#x27; ซึ่งเบราว์เซอร์จะแสดงเป็นข้อความ

Entity แบบชื่อ ฐานสิบ และฐานสิบหก

อักขระ Unicode ทุกตัวเขียนเป็นการอ้างอิงตัวเลขได้: ฐานสิบ &#8364; หรือฐานสิบหก &#x20AC; สำหรับ € อักขระที่ใช้บ่อยหลายตัวยังมีชื่อที่อ่านง่าย เช่น &euro;, &copy; หรือ &nbsp; การอ้างอิงแบบตัวเลขใช้ได้ทุกที่ รวมถึง 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 ทั้งห้าตัว (& < > " ') เป็นค่าเริ่มต้นที่ปลอดภัย
&amp;nbsp; คืออะไร?
ช่องว่างแบบไม่ตัดบรรทัด (U+00A0) ดูเหมือนช่องว่างทั่วไป แต่ป้องกันการตัดบรรทัดและไม่ถูกยุบรวมกับช่องว่างข้างเคียง
ทำไม &amp;copy2024 ถอดรหัสเป็น ©2024?
เพื่อความเข้ากันได้ย้อนหลัง เบราว์เซอร์จะถอดรหัส entity แบบเก่าบางตัว เช่น &copy, &amp และ &lt แม้ไม่มีเครื่องหมายอัฒภาคปิดท้าย ตัวถอดรหัสนี้ทำตามกฎเดียวกัน แต่ใน HTML ของคุณเองควรใส่อัฒภาคเสมอ
อะพอสทรอฟีใช้ &amp;apos; หรือ &amp;#39;?
&apos; ใช้ได้ใน HTML5 และ XML แต่ไม่ใช่ใน HTML 4 ดังนั้น &#39; หรือ &#x27; แบบตัวเลขจึงเข้ากันได้ดีที่สุด และเป็นสิ่งที่ตัวเข้ารหัสนี้สร้างออกมา

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