UTF-16

Encoding & Standards

การเข้ารหัส Unicode แบบความกว้างผันแปร ใช้ 2 หรือ 4 ไบต์ต่ออักขระ ใช้ภายในโดย JavaScript, Java และ Windows

UTF-16 uses 16-bit code units. Characters in the Basic Multilingual Plane (U+0000 to U+FFFF) use one code unit (2 bytes). Characters above U+FFFF — including most emoji — require a surrogate pair (4 bytes).

This is why JavaScript's `string.length` can be surprising with emoji: `'😀'.length` returns 2 (two UTF-16 code units), not 1. Developers must use spread syntax (`[...'😀'].length`) or `Array.from()` for correct counting.

UTF-16 exists in two byte orders: UTF-16LE (little-endian, used by Windows) and UTF-16BE (big-endian). A BOM character can indicate which is used.

คำที่เกี่ยวข้อง

BOM (BOM) BOM (BOM)
Byte Order Mark (U+FEFF) ที่วางไว้ที่ต้นไฟล์ข้อความเพื่อระบุลำดับไบต์ (endianness) ในการเข้ารหัส UTF-16/UTF-32
Supplementary Multilingual Plane (SMP) Supplementary Multilingual Plane (SMP)
Unicode เพลน 1 (U+10000 ถึง U+1FFFF) ซึ่งเป็นที่จัดสรรโค้ดพอยท์ของอิโมจิส่วนใหญ่
Surrogate Pair Surrogate Pair
หน่วยโค้ด UTF-16 สองตัว (surrogate สูง U+D800-U+DBFF ตามด้วย surrogate ต่ำ U+DC00-U+DFFF) ที่แสดงอักขระที่อยู่เหนือ U+FFFF ร่วมกัน
UTF-32 UTF-32
การเข้ารหัส Unicode แบบความกว้างคงที่ ใช้ 4 ไบต์ต่ออักขระพอดี ทำให้แมปโค้ดพอยท์ได้โดยตรงแต่ใช้พื้นที่มากกว่า
UTF-8 UTF-8
การเข้ารหัส Unicode แบบความกว้างผันแปร ใช้ 1 ถึง 4 ไบต์ต่ออักขระ เป็นมาตรฐานหลักบนเว็บ (ใช้โดยเว็บไซต์กว่า 98%)
โค้ดยูนิต โค้ดยูนิต
การรวมบิตขั้นต่ำที่ใช้เข้ารหัสอักขระ: 8 บิตสำหรับ UTF-8, 16 บิตสำหรับ UTF-16 และ 32 บิตสำหรับ UTF-32

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

🔢 ค้นหา Unicode ค้นหา Unicode
ป้อนจุดรหัสเช่น U+1F600 และรับ emoji, รายละเอียดการเข้ารหัส, ไบต์ UTF-8/16 และ HTML entities