在线文本编码转换器(Base64 / URL / Unicode / HTML 实体 / Hex / 二进制)
在线文本编码转换器(Base64 / URL / Unicode / HTML 实体 / Hex / 二进制):中文与 Emoji 一键编解码
文本编码转换器怎么用?一个页面覆盖七种编码
文本编码转换器是一种把同一段文字在 Base64、URL、Unicode、HTML 实体、Hex 与二进制之间互相转换的在线工具。
粘贴内容、选类型、点编码或解码即可得到结果,全部在浏览器本地完成,输入不会上传服务器。
Base64 编码为什么会让中文变长?
因为 Base64 按字节编码,而 UTF-8 下一个常用汉字占 3 个字节,3 个字节经 Base64 编码后变成 4 个字符,所以中文内容的 Base64 结果通常比原文长约三分之一,末尾还可能出现一个或两个等号作为补位。这不是错误,而是 4 字符表示 3 字节这条规则的必然结果。
如果结果要放进 URL、JWT 或文件名,请改用 Base64URL:它把加号、斜杠换成减号、下划线,并省略结尾的等号,避免这些字符在传输中被二次转义。
URL 编码该用 encodeURI 还是 encodeURIComponent
要编码的内容会作为参数出现在查询串里时用 encodeURIComponent,它会把斜杠、问号、和号等分隔符一并编码;只处理整条链接里的空格与中文时用 encodeURI,它会保留这些分隔符。选错的典型症状是把一个完整链接当作参数传给接口后,服务端只收到第一个查询参数。
Unicode 转义与 HTML 实体有什么区别
Unicode 转义属于 JavaScript 与 JSON 的字符串表示层,形如反斜杠加 u 再加四位码位,用于在源码里安全地写出任意字符;HTML 实体属于 HTML 文档层,例如把小于号写成 < 或 <,用于让这些字符以文本形式显示而不是被浏览器当作标签解析。前者解决代码可读性与安全性,后者解决页面渲染。
Hex 与二进制:为什么一个汉字是 3 个字节、6 个十六进制字符
因为本工具按 UTF-8 字节输出:1 个字节等于 2 个十六进制字符、等于 8 位二进制。常用汉字在 UTF-8 下占 3 个字节,所以显示为 6 组十六进制、24 位二进制。反过来解码时,Hex 输入的长度必须是偶数、二进制长度必须是 8 的倍数,否则会明确报错而不是给出错误结果。
哪些情况最容易出现报错或乱码
最常见的三类:一是把 Base64 结果里的换行、空格连同内容一起粘贴,导致解码失败或字符错位;二是解码方向选错,把未编码的原文当成编码结果去解;三是把 URL 编码的结果当作 Base64 去解。遇到报错时,先确认类型与编码解码方向这两项是否与实际数据一致。
这个工具能做什么、不做什么
能做的:七种编码的双向转换、中文与 Emoji、多行文本、一键复制,最近记录只保存在本机浏览器。不能做的:不做加密(Base64 只是编码,任何人都能还原)、不处理文件与图片、不做字符集转换(中文乱码排查请用字符编码转换)。所有计算在浏览器完成,输入内容不会上传服务器。
Base64、URL、Unicode、HTML 实体、Hex、二进制分别用在什么场景?
这六类编码解决的是不同层面的问题:Base64 把二进制数据放进只允许文本的协议(邮件、JWT、Data URL),URL 编码让参数在链接里安全传输,Unicode 转义用于在 JSON 与 JavaScript 源码里书写任意字符,HTML 实体让尖括号这类字符以文本形式显示,Hex 与二进制用于核对字节层面的真实内容。
把常用编码集中在一个页面,排查接口参数、日志乱码与数据格式问题时不必在多个站点之间来回切换。
- 输入与结果都在浏览器本地处理,内容不会上传服务器,也无需注册。
- Base64 按 UTF-8 字节编码:1 个汉字占 3 字节,编码后长度约为原文的 1.33 倍;中文与 Emoji 都能正确往返。
- URL 编码可选 encodeURI 与 encodeURIComponent 两种语义,解码时可选把加号视为空格。
- Hex 与二进制按 UTF-8 字节输出(1 字节 = 2 个十六进制字符 = 8 位),便于与抓包工具、数据库字段逐字节核对。
- 解码时遇到非法字符、奇数长度的 Hex、非 8 倍数的二进制会明确报错,不返回看似正确的结果。
- 本工具只做编码与解码,不提供加密能力:Base64 结果任何人都能还原。