工具概述
UTF-16编码解码在线工具是一款专业的字符编码转换工具,用于将文本与UTF-16编码单元之间进行相互转换。UTF-16是Unicode字符编码标准的一种实现方式,JavaScript内部就是使用UTF-16来表示字符串。
本工具支持将任意文本转换为UTF-16编码单元序列(以十六进制、十进制或二进制格式显示),也可以将编码单元序列还原为文本。支持中文、英文、表情符号等各种Unicode字符。
UTF-16编码特点
- 固定宽度:基本多语言平面(BMP)字符使用2字节
- 代理对:补充平面字符使用4字节(两个代理对)
- 字节序:需要BOM标记或指定字节序(大端/小端)
- JavaScript原生:JS的String类型内部使用UTF-16
使用示例
编码示例
A→0x0041(ASCII字符)中→0x4E2D(中文)😀→0xD83D 0xDE00(emoji,使用代理对)
常见问题与回答
1. 什么是UTF-16?
UTF-16是Unicode的一种编码实现方式,使用2字节或4字节来表示字符。基本多语言平面(BMP)字符使用2字节,补充平面字符使用代理对表示。
2. UTF-16和UTF-8有什么区别?
UTF-8是变长编码,ASCII字符占1字节,中文占3字节;UTF-16中大部分常用字符固定占2字节。UTF-8更适合网络传输,UTF-16更适合内存处理。
3. 什么是代理对?
当Unicode码点超过0xFFFF时,UTF-16使用两个编码单元(代理对)来表示。高代理范围是0xD800-0xDBFF,低代理范围是0xDC00-0xDFFF。
4. 为什么emoji显示为两个编码单元?
大部分emoji字符的码点在补充平面(超过0xFFFF),UTF-16需要使用代理对来表示,因此会显示为两个编码单元。
5. JavaScript的charCodeAt和codePointAt有什么区别?
charCodeAt返回UTF-16编码单元(0-65535),codePointAt返回完整的Unicode码点。对于BMP字符两者相同,对于补充平面字符不同。