编码与格式转换工具箱
ENCODE & CONVERT TOOLBOX本地转换Base64、URL、HTML 实体、Unicode 转义、时间戳、UUID、SHA 摘要,加上 JSON ↔ YAML 与 JSON → TOML 转换,共 9 个小工具放在同一页里。全部计算在浏览器本地完成,不联网、不上传、不写本地存储;YAML 与 TOML 只做常见子集,遇到锚点、多行块标量、内联表这类结构会直接告诉你「不支持」,不会假装转换成功。
选一个工具
切换工具时各自的输入都留着,切回来还在。
输入
选中的工具决定输入口径,先选方向再填内容。
UUID 工具不需要输入文本,改数量或点「转换」会重新生成一批。
摘要用浏览器自带的 WebCrypto(crypto.subtle)计算。它只在 https 或 localhost 下可用:用 http + IP 打开时浏览器不提供这个接口,页面会直接提示,不会给你一个错的摘要。WebCrypto 也不提供 MD5 / SHA-3 / SM3。
结果
出错时这里留空,具体原因写在下面的状态条里。
支持与不支持(能力边界)
先把边界写清楚,比给一个看着成功的结果更省事。
- Base64:按 UTF-8 处理中文;解码时忽略换行与空格,也接受 URL-safe 的
-与_;输出不含data:前缀。解出来的字节不是合法 UTF-8 时会提示改用「还原成文件下载」。 - URL:编码走
encodeURIComponent,解码走decodeURIComponent;另外给一条encodeURI的整段 URL 口径(保留:/?#&=)。要「只编码参数」,请自己把参数值拆出来逐段编码——本页不替你拆 URL,免得猜错参数边界。 - HTML 实体:只还原
&、<、>、"、'(含')与十进制 / 十六进制数字实体; 、©这类其余命名实体原样保留,不会被猜着替换。 - Unicode 转义:按 UTF-16 码元输出,所以 emoji 会变成两个
\uXXXX(代理对),这是正常的;还原时同时接受\uXXXX与\u{XXXXX},十六进制大小写都行。 - 时间戳:13 位及以上按毫秒、12 位以内按秒;11 位两种口径都说得通,页面会把两种都列出来。反向输入日期时间时按浏览器本地时区解释,只有写明
Z或+08:00才按指定时区算。 - UUID:v4 随机版本,用
crypto.getRandomValues;环境里没有这个接口时会退回Math.random并在状态条说明,那种情况下不要用在安全场景。 - 摘要哈希:只有 SHA-1 与 SHA-256(WebCrypto 的算法清单里没有 MD5、SHA-3、SM3)。需要 https 或 localhost,见输入区提示。
- JSON ↔ YAML:只支持对象、数组、字符串、数字、布尔、
null、缩进层级、#注释、-列表与key: value。锚点与别名(&name/*name)、合并键<<、多行块标量(|/>)、内联表{ }与内联数组[ ](空的{}与[]除外)、多文档---、标签!tag、跨行标量一律报「不支持」并给出行号,不会给出半对的结果。 - JSON → TOML:顶层必须是对象(TOML 没有顶层数组);
null与混合类型数组(如[1, "a"])表达不出来,会指名报错。输出先写键值、再写子表,所以键的先后顺序可能与你 JSON 里的书写顺序不同。 - 不做的:XML / HTML 解析、CSV、Protobuf、JWT、二维码、AES 等加解密、MD5、日期本地化格式。
{{变量}}这类模板占位符不是合法的 JSON / YAML,粘贴之前请先换成真实值。 - 数据去处:不请求任何网络接口、不写 Cookie 与本地存储;关掉页面输入就从内存里没了。读入的文件只在你的浏览器里被读成本地内容。
怎么用这一页
- 选工具左侧点一个工具(Base64、URL、HTML 实体、Unicode、时间戳、UUID、摘要、JSON ↔ YAML、JSON → TOML),切换时各自的输入都会留着。
- 选方向有来有回的四个转义工具(Base64 / URL / HTML / Unicode)与 JSON ↔ YAML 先在「方向」里选编码还是解码、JSON → YAML 还是 YAML → JSON。
- 填内容把要处理的内容粘进输入框,页面随输入自动转换;摘要工具选 SHA-1 或 SHA-256,UUID 工具填 1–50 的数量。
- 取结果右侧给出结果、字符数与体积统计,可一键复制或下载;转换不了时结果区留空,具体原因(含出错行号)写在状态条上。
编码与格式转换常见问题
Base64 解码报错是什么原因?
常见三类:内容里有 Base64 字符集以外的符号(只允许 A–Z a–z 0–9 + / =,URL-safe 的 - 与 _ 也接受);内容被截断,去掉填充后长度不是 4 的倍数;字节解出来不是合法 UTF-8(多半是二进制文件)。前两类页面会说明是哪一种,第三类请改用「Base64 → 还原成文件下载」。换行与空格不影响解码,可以整段粘贴。
YAML 提示「不支持」的写法都有哪些?
锚点与别名(&name / *name)、合并键 <<、多行块标量(| 与 >)、内联表 { } 与内联数组 [ ](空的 {} 与 [] 除外)、多文档(---)、标签(!tag)、跨行标量、Tab 缩进与重复键。本页的 YAML 解析只覆盖常见子集:对象、数组、字符串、数字、布尔、null、缩进层级、# 注释与「- 」列表。遇到子集外的写法会给出具体行号,不会硬猜。
JSON 转 TOML 为什么有时直接报错?
TOML 表达力比 JSON 窄:顶层必须是对象(不能是数组);没有 null,值为 null 的字段要么删掉要么改成空字符串 / 0 / false;数组元素类型必须一致,[1, "a"] 这类混合数组无法表示;键值必须写在子表之前,所以页面会先输出键值再输出 [表]。报错会指名是哪个字段,照着改就行。
时间戳按秒还是毫秒?11 位数字怎么办?
页面按位数判断:13 位及以上当毫秒,12 位以内当秒。11 位两种口径都说得通(当秒是 2286 年之后,当毫秒是 1970 年前后),所以会把两种解释都列出来,按数据来源确认即可。反过来填日期时间也能算出时间戳,按浏览器本地时区解释,只有写明 Z 或 +08:00 才与时区无关。
摘要哈希为什么算不出来?
摘要用的是浏览器自带的 WebCrypto(crypto.subtle),它只在 https 或 localhost 下可用:用 http + IP 打开时浏览器不提供这个接口,页面会直接提示而不会给出错误的摘要。另外 WebCrypto 只提供 SHA-1 与 SHA-256,没有 MD5、SHA-3、SM3,本页也不做这些。
内容会被上传吗?
不会。九个工具的计算全部由浏览器里的 JavaScript 完成,不请求任何接口、不写 Cookie 与本地存储;读入的文件也只是在你本地被读成本地内容。关掉页面,输入与结果就随内存释放。
相关工具
编码与格式转换在浏览器本地完成,文件不上传、不落盘。