这个工具适合做什么
在线字符编码转换工具,支持文本字符串在utf-8, utf-16le, ucs-2, latin1, base64, ascii, hex 以及字节数组等编码之间相互转换。
它适合排查乱码问题、检查接口负载、处理不同系统之间的文本兼容性,或者把文本和字节数据整理成目标协议要求的格式。当前页更适合做编码表示和字节层面的转换,而不是做加密或压缩。
各编码说明
| 编码/表示 | 示例 | 适合场景 |
|---|---|---|
| UTF-8 | E4 BD A0 E5 A5 BD | 现代网页、接口、JSON、跨语言文本传输。 |
| UTF-16LE | 60 4F 7D 59 | Windows、小端序文本、部分二进制协议。 |
| ASCII | 48 65 6C 6C 6F | 只包含英文、数字和基础符号的旧系统数据。 |
| Latin1 | E9 | 西欧语言旧编码或单字节兼容场景。 |
| Base64 | 5L2g5aW9 | 把任意字节包装成可传输的 ASCII 文本。 |
| Hex | e4bda0e5a5bd | 观察和复制原始字节,常用于协议、签名和调试。 |
| Byte array | 228,189,160,229,165,189 | 把字节明确写成 0-255 的十进制数组。 |
- 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,还是字节数组。
- 如果能拿到原始字节,先用 Hex 或 byte-array 观察字节是否完整。
- 按最可能的字符集尝试解码,现代接口优先检查 UTF-8。
- 如果出现 U+FFFD、问号或截断,说明字节与当前解码方式不匹配。
- 确认是否还叠加了 URL 编码、Unicode 转义或 JSON 字符串转义。
| 现象 | 常见原因 | 下一步 |
|---|---|---|
| 中文变成乱码 | UTF-8 字节被当成 Latin1/GBK 等方式读取 | 查看原始字节,再换正确编码解码。 |
| 出现 U+FFFD | UTF-8 解码遇到非法字节序列 | 检查字节是否被截断或编码选择是否错误。 |
| Base64 解码后不可读 | 解码得到的是二进制或还需要再按字符集解释 | 先看 Hex,再选择 UTF-8/UTF-16LE/Latin1。 |
| Hex 转文本失败 | Hex 不是偶数字符或不是目标文本编码 | 补全/清理 Hex,再按正确字符集解码。 |
实际使用时要注意
- 同一段文本在不同编码下会对应不同字节序列,因此排查乱码时要先确认“原始字节”到底来自哪种编码。
- 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 等实际字符编码。
UTF-8 和 Unicode 转义应该用哪个工具?
如果你在处理字节如何表示成文本,使用字符编码转换工具;如果你看到的是 \u4e2d\u6587 这类字符串转义,使用 Unicode 编码/解码工具更直接。
Base64 解码后为什么还要选择 UTF-8 或 Hex?
Base64 只负责把字节包装成 ASCII 文本。解码后得到的仍然是字节,这些字节可能是 UTF-8 文本,也可能是图片、密钥、压缩数据或其他二进制内容。
相关工具
- Unicode编码/解码:Unicode编码/解码在线工具,在线Unicode编码和Unicode解码
- URL编码/解码:对Url中特殊的字符进行在线编码与在线解码