在线字符编码转换工具

字符编码转换工具

源编码
字节:0 字符:0
目标编码
字节:0 字符:0 发生截断: 有损转换:

工具说明

这个工具适合做什么

在线字符编码转换工具,支持文本字符串在utf-8, utf-16le, ucs-2, latin1, base64, ascii, hex 以及字节数组等编码之间相互转换。

它适合排查乱码问题、检查接口负载、处理不同系统之间的文本兼容性,或者把文本和字节数据整理成目标协议要求的格式。当前页更适合做编码表示和字节层面的转换,而不是做加密或压缩。

各编码说明

  • utf-8:多字节编码的 Unicode 字符。许多网页和其他文档格式使用 UTF-8。当解码结果中不完全包含有效 UTF-8 数据时,则 Unicode 替换字符 U+FFFD 将用于表示这些错误。
  • utf-16le:多字节编码的 Unicode 字符。与 utf-8 不同,字符串中的每个字符都将使用 2 或 4 个字节进行编码。本工具所使用的 utf-16le 是 UTF-16 的小端序变体。
  • latin1:Latin-1 代表 ISO-8859-1。此字符编码仅支持 U+0000 至 U+00FF 的 Unicode 字符。每个字符都使用单个字节进行编码。不符合该范围的字符将被截断并映射到该范围内的字符。
  • base64:Base64 编码。当输入为 Base64 编码的字符串中包含非 Base64 字符集中的分隔字符(例如空格、制表符和换行符等)时,这些无效字符会被忽略。
  • hex:将每个字节编码为两个十六进制字符。当输入不是由偶数个十六进制字符组成的字符串时,将对数据截断。
  • ascii:仅适用于 7 位 ASCII 数据。通常没有理由优先使用此编码,因为在编码或解码纯 ASCII 文本时,utf-8(或者,如果已知数据始终是纯 ASCII,则为 latin1)通常是更好的选择。它主要用于旧版兼容性。
  • ucs-2:utf-16le 的别名。UCS-2 过去指的是 UTF-16 的一种变体,它不支持代码点大于 U+FFFF 的字符。
  • byte-array:字节数组,将每个字节编码为 0-255 之间的十进制数值,并用英文逗号 `,` 连接起来。

实际使用时要注意

  • 同一段文本在不同编码下会对应不同字节序列,因此排查乱码时要先确认“原始字节”到底来自哪种编码。
  • Base64、Hex 和 byte-array 更像是字节表示方式或传输形式,常用来帮助你观察底层数据,而不是直接代表字符集本身。
  • 如果转换后出现截断、替换字符或不可读结果,通常意味着输入内容与所选编码并不匹配。
  • 当你还要继续处理转义、参数编码或文本负载时,可以再配合Unicode 编码/解码URL 编码/解码一起排查。

常见问题

为什么转换后会出现乱码或 U+FFFD 替换字符?

这通常说明当前选用的解码方式与原始字节数据不匹配,或者输入本身已经不完整。像 UTF-8 这样的编码在遇到非法字节序列时,会用 U+FFFD 替换字符来标记错误位置。

ISO-8859-1 和 latin1 在这里有什么关系?

在这个工具里,latin1 就是按 ISO-8859-1 的单字节字符集来理解的。它只能覆盖 U+0000 到 U+00FF 范围,因此处理中文、emoji 或更高码点字符时会丢失信息,不适合作为现代多语言文本的默认选择。

为什么 hex 或 byte-array 转回文本后结果不对?

因为 hex 和 byte-array 只告诉你字节值,不告诉你这些字节原本该按哪种字符编码解释。要正确还原文本,还需要再选对 UTF-8、UTF-16LE、latin1 等实际字符编码。

相关工具

如果你还要继续处理文本转义、参数传输或字节内容,可继续使用这些相关工具: