← 中文资源

简体中文版本

支持 Base64 解码的 Data URL 解析器

把 Data URL 解析为媒体类型、参数与字节,支持百分号编码和 Base64 载荷,并暴露文本解码方法。

阅读英文原文

功能说明

Data URL 把媒体类型、参数和数据内联在一个字符串中,常见于图片预览、下载和小型资源嵌入。该解析器拆分元信息与载荷,支持 Base64 和百分号编码,返回 MIME、参数字典、字节数组和文本解码方法。它适合在浏览器端读取粘贴的 Data URL 或测试夹具。

关键代码

必须以 data: 开头并包含逗号。元信息按分号拆分,第一段为媒体类型,base64 标记单独识别,其余按 key=value 解码。Base64 载荷用 atob 转二进制字符串,再逐字符转字节;普通载荷先 decodeURIComponent 再 UTF-8 编码。

if (base64) {
  const binary = atob(payload);
  bytes = Uint8Array.from(binary, (char) => char.charCodeAt(0));
} else {
  bytes = new TextEncoder().encode(decodeURIComponent(payload));
}

使用注意

atob 对非法 Base64 会抛错,调用方应捕获并提示。缺省媒体类型按 text/plain 处理。参数值使用 decodeURIComponent,可能因畸形转义抛 URIError。该函数不限制数据大小,处理不可信输入时应先检查长度。text 方法按 UTF-8 解码,二进制资源不应调用。

验证方式

断言解析 data:text/plain,hello 得到 hello。解析 base64 编码的 aGVsbG8= 得到同样文本。charset=utf-8 参数被写入字典。缺少逗号抛 RangeError,非 data: 前缀抛 TypeError。中文文本经百分号编码后应正确还原。