การเข้ารหัส

Punycode encode/decode

เข้ารหัสชื่อโดเมนที่มีอักขระ Unicode (IDN) เป็นรูปแบบ Punycode ที่รองรับ ASCII (xn--) และย้อนกลับ

The DNS system historically only supports ASCII characters, so domain names with Cyrillic, CJK, or other non-ASCII characters (IDN) are encoded as Punycode — an ASCII-compatible form prefixed with xn--. This tool encodes and decodes such domains.

How to use it

Common uses

Things to keep in mind

Visually similar characters from different scripts (like Cyrillic "а" and Latin "a") can form a domain that looks identical to a known brand — this is the basis of homograph phishing.

Not every browser shows decoded Unicode the same way: when a domain label mixes scripts, browsers often deliberately show the raw xn-- form as a warning sign.

บทความเกี่ยวกับเครื่องมือนี้: Punycode: โดเมนสากลทำงานใน DNS อย่างไร

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

Punycode ใช้ทำอะไร?

Punycode เข้ารหัสชื่อโดเมนสากลที่มีอักขระนอก ASCII (เช่น münchen.de) ให้อยู่ในรูปแบบที่ใช้ได้กับ ASCII โดยมีคำนำหน้า xn-- เนื่องจากระบบ DNS รองรับเฉพาะป้ายกำกับแบบ ASCII เท่านั้น

ทำไมควรระวังโดเมน Punycode?

Punycode เปิดช่องให้เกิดการโจมตีแบบ homograph ซึ่งใช้อักขระที่หน้าตาคล้ายกันจากตัวอักษรอื่นมาลงทะเบียนโดเมนที่ดูเหมือนโดเมนที่น่าเชื่อถือทุกประการ หากโดเมนมีคำนำหน้า xn-- ให้ถอดรหัสที่นี่เพื่อดูว่าแท้จริงสะกดว่าอะไร

ใช้ได้เฉพาะกับชื่อโดเมนเต็มเท่านั้นหรือ?

คุณสามารถเข้ารหัสหรือถอดรหัสป้ายกำกับเดียวหรือทั้งโดเมนที่มีจุดคั่นได้ — แต่ละป้ายกำกับระหว่างจุดจะถูกแปลงแยกกัน และคำนำหน้า xn-- จะถูกเพิ่มเฉพาะป้ายกำกับที่มีอักขระนอก ASCII จริง ๆ เท่านั้น

จะรู้ได้อย่างไรว่าลิงก์ใช้ Punycode?

โดเมนที่เข้ารหัสแล้วจะมีคำนำหน้า xn-- อยู่หน้าแต่ละป้ายกำกับที่มีอักขระนอก ASCII เสมอ หากเห็นโดเมนที่ขึ้นต้นด้วย xn-- ในแถบที่อยู่หรือในอีเมล นั่นคือสัญญาณของ IDN ควรตรวจสอบว่าข้อความที่แท้จริงที่ซ่อนอยู่หลังการเข้ารหัสคืออะไร

เบราว์เซอร์ทุกตัวแสดงอักขระซีริลลิกในแถบที่อยู่เหมือนกันหรือไม่?

ไม่ เบราว์เซอร์บางตัวจะแสดง Unicode ที่ถอดรหัสแล้วเฉพาะเมื่ออักขระทั้งหมดในโดเมนอยู่ในชุดตัวอักษรเดียวกัน แต่เมื่อมีการผสมชุดตัวอักษร (สัญญาณของการโจมตีแบบ homograph) จะจงใจแสดงสตริง xn-- ดิบแทนอักขระต้นฉบับ

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

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

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

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

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

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

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

HTML Entities: วิธีแสดงอักขระพิเศษอย่างปลอดภัย

ทำไมต้อง escape อักขระ < > & และสิ่งนี้ป้องกันไม่ให้มาร์กอัปเสียหายได้อย่างไร

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

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

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

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

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

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

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

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

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

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

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

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

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

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