Unicode 编码转换

在文本与多种编码视图之间互转:Unicode 码点(U+XXXX)、十进制码点、HTML 实体(&#xXXXX;)与 UTF-8 字节(十六进制)。遍历时使用 codePointAt,能正确处理 emoji 与扩展区汉字等星平面字符,全部在浏览器本地完成。

输入内容 等待输入

文本 → 编码:逐字符输出编码视图;编码 → 文本:识别 U+XXXX、&#xXXXX;、&#DDDD; 与独立的十进制/0x 十六进制数值。

转换结果
字符数(UTF-16 码元)—
码点数—
字节数(UTF-8)—
当前方向—
选择方向与格式,点击「转换」,结果将显示在这里。

星平面字符(如 emoji)在 UTF-16 中占 2 个码元、1 个码点,比较两列即可看出差异。

转换规则
  • 遍历文本使用 String.prototype.codePointAt,遇到大于 0xFFFF 的码点会跳过随后的低位代理,避免把星平面字符拆成两个。
  • 码点输出为至少 4 位大写十六进制,超过 4 位的按实际位数输出,例如 U+1F600。
  • HTML 实体输出为 &#x + 十六进制 + ;。
  • UTF-8 字节按字节以两位大写十六进制输出,如 F0 9F 98 80。
  • 编码还原文本时识别 U+XXXX、&#xXXXX;、&#DDDD;,以及以空格分隔的十进制或 0x 十六进制数值。
  • 代理区码点(U+D800–U+DFFF)与超过 U+10FFFF 的数值会被忽略,因为它们不是合法码点。