การเข้ารหัส

HTML Entities Encode/Decode

เข้ารหัสและถอดรหัส HTML entities — แสดงอักขระพิเศษบนหน้าเว็บอย่างปลอดภัย

HTML entities are a way to write characters that would otherwise break markup (<, >, &) or have no keyboard key, as safe text sequences like &lt; or &amp;. This tool encodes and decodes such entities right in your browser.

How to use it

Common uses

Things to keep in mind

HTML entity escaping only protects against XSS via a page's text content — it does not protect a JavaScript context (innerHTML, eval) or href/src attributes containing unvalidated URLs.

Encode exactly at the point where text gets inserted into HTML, not ahead of time when saving to a database — otherwise the data gets mangled when reused outside an HTML context.

บทความเกี่ยวกับเครื่องมือนี้: HTML Entities: วิธีแสดงอักขระพิเศษอย่างปลอดภัย

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

เอนทิตี HTML แบบชื่อกับแบบตัวเลขต่างกันอย่างไร?

เอนทิตีแบบชื่อ เช่น &amp; อ่านง่ายกว่า ส่วนแบบตัวเลข เช่น &#38; หรือ &#x26; (ฐานสิบหรือฐานสิบหก) ใช้ได้กับทุกอักขระ รวมถึงตัวที่ไม่มีชื่อเรียก ทั้งสองแบบแสดงผลเหมือนกันในเบราว์เซอร์

เมื่อไหร่ที่จำเป็นต้องเข้ารหัสเอนทิตี HTML จริง ๆ?

เข้ารหัสอักขระอย่าง < > & " ' ทุกครั้งที่แทรกข้อความจากผู้ใช้หรือข้อความไดนามิกลงใน HTML เพื่อให้เบราว์เซอร์ถือว่าเป็นข้อความ ไม่ใช่ส่วนหนึ่งของแท็กหรือแอตทริบิวต์

โหมด "พื้นฐาน" กับ "ทุกอักขระ" ต่างกันอย่างไร?

โหมดพื้นฐานจะเข้ารหัสเฉพาะอักขระที่มีความหมายเชิงโครงสร้างใน HTML (เช่น < > & " ') ส่วน "ทุกอักขระ" จะแปลงอักขระนอก ASCII อื่น ๆ เป็นเอนทิตีตัวเลขด้วย ซึ่งมีประโยชน์กับตัวแยกวิเคราะห์รุ่นเก่าหรือเข้มงวด

ต้อง escape ข้อความในแอตทริบิวต์ต่างจากในเนื้อหาหน้าเว็บหรือไม่?

อักขระหลัก (<, >, &) escape เหมือนกัน แต่ภายในแอตทริบิวต์ที่อยู่ในเครื่องหมายคำพูด จำเป็นอย่างยิ่งที่ต้อง escape เครื่องหมายคำพูดชนิดเดียวกับที่ล้อมรอบแอตทริบิวต์นั้นด้วย ไม่เช่นนั้นค่าจะ "ขาด" เร็วกว่าที่คาดไว้

การ escape HTML ป้องกัน XSS ได้ทุกรูปแบบหรือไม่?

ไม่ มันปิดช่องโหว่ที่พบบ่อยที่สุด — การแทรกข้อความลงในเนื้อหา HTML — แต่ไม่ได้ป้องกัน XSS ที่เกิดผ่านบริบท JavaScript (เช่น innerHTML ที่ตามด้วยการรันโค้ด) หรือ URL ที่ไม่ผ่านการตรวจสอบใน href/src

บทความ: การเข้ารหัส

Base64: การเข้ารหัสมีไว้ทำไมและทำงานอย่างไร

Base64 เปลี่ยนข้อมูลไบนารีเป็นข้อความ ASCII อย่างไร และเมื่อไหร่ที่จำเป็นต้องใช้จริง ๆ

Base32: ต่างจาก Base64 อย่างไรและสะดวกกว่าเมื่อไหร่

ตัวอักษร Base32 ที่ไม่แยกตัวพิมพ์เล็กใหญ่ และกรณีที่สะดวกกว่า Base64

URL Encode/Decode: percent-encoding ในลิงก์

อักขระพิเศษในที่อยู่และพารามิเตอร์กลายเป็นลำดับ %XX ได้อย่างไร

JWT: โครงสร้างโทเคนและความหมายของการ "ถอดรหัส" JWT

header, payload และ signature ของ JWT และทำไมการถอดรหัสจึงไม่เหมือนกับการตรวจสอบลายเซ็น

Unicode Escape: ลำดับ \uXXXX หมายความว่าอย่างไร

ลำดับแบบ A ใน JSON และสตริง JS มาจากไหน และหมายความว่าอย่างไร

ROT13 และรหัสซีซาร์: การแทนที่อักขระแบบง่าย

ทำไมการเลื่อน 13 ตัวอักษรทำให้ ROT13 ผกผันในตัวเอง และทำไมยังมีการใช้อยู่ในปัจจุบัน

Punycode: โดเมนสากลทำงานใน DNS อย่างไร

โดเมนที่มีอักขระไม่ใช่ละตินกลายเป็นรูปแบบ ASCII ที่มีคำนำหน้า xn-- ได้อย่างไร

รหัสมอร์ส: ข้อความกลายเป็นจุดและขีดได้อย่างไร

หลักการเข้ารหัสตัวอักษรเป็นจุดและขีด และรหัสมอร์สยังใช้ที่ไหนอยู่บ้างในปัจจุบัน

Data URI: เมื่อไหร่ควรฝังรูปภาพลงในโค้ดโดยตรง

Data URI ฝังเนื้อหาของไฟล์ลงใน HTML หรือ CSS โดยตรงอย่างไร และเมื่อไหร่ที่คุ้มค่า

Gzip + Base64: บีบอัดข้อมูลเพื่อส่งเป็นข้อความ

ทำไมข้อมูลไบนารีที่บีบอัดแล้วจึงถูกเข้ารหัสด้วย Base64 อีกครั้งก่อนใส่ลงในฟิลด์ข้อความ

XML Entities: การ escape อักขระในเอกสาร XML

เอนทิตี XML ที่จำเป็นห้าตัว ซึ่งหากไม่มีเอกสารจะเสียหายขณะแยกวิเคราะห์