UTF-16编码解码

文本与UTF-16编码单元转换

输入内容

字节格式:
十六进制

转换结果

工具概述

UTF-16编码解码在线工具是一款专业的字符编码转换工具,用于将文本与UTF-16编码单元之间进行相互转换。UTF-16是Unicode字符编码标准的一种实现方式,JavaScript内部就是使用UTF-16来表示字符串。

本工具支持将任意文本转换为UTF-16编码单元序列(以十六进制、十进制或二进制格式显示),也可以将编码单元序列还原为文本。支持中文、英文、表情符号等各种Unicode字符。

UTF-16编码特点

  • 固定宽度:基本多语言平面(BMP)字符使用2字节
  • 代理对:补充平面字符使用4字节(两个代理对)
  • 字节序:需要BOM标记或指定字节序(大端/小端)
  • JavaScript原生:JS的String类型内部使用UTF-16

使用示例

编码示例

  • A0x0041 (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字符两者相同,对于补充平面字符不同。