Ascii85 至 Text 转换器
将文本编码为 Ascii85,或将 Ascii85 解码回文本。Ascii85 是 PostScript、PDF 流和 Git 二进制补丁中使用的 Base85 编码。该工具会将输入转换为 UTF-8 字节,每四个字节转换为五个 ! 到 u 之间的字符,将四个零字节写为 z,并可将结果包装在 Adobe 的 <~ 和 ~> 分隔符中。解码时支持这两种形式,并会忽略空白字符。
常见问题
什么是 Ascii85?
Ascii85 也称为 Base85,可将二进制数据编码为可打印的 ASCII 字符。它将每 4 个字节转换为 5 个字符,范围从 ! (33) 到 u (117),因此数据只会增加 25%,而 Base64 会增加 33%。Adobe 在 PostScript 和 PDF 中使用它。
有哪些常见的 Ascii85 示例?
四个字符 Man 后跟一个空格会得到 9jqo^;Man is distinguished 会得到 9jqo^BlbD-BleB1DJ+*+F(f,q。文本 sure. 会得到 F*2M7/c。该工具会输出这些值,并能将它们解码还原。
字符 z 表示什么?
四个零字节组成的一组会写成单个 z,而不是 !!!!!。解码器会将 z 展开为四个零字节。z 只能出现在一组的开头。
<~ 和 ~> 分隔符是什么?
Adobe 格式使用 <~ 和 ~> 标记 Ascii85 数据的开头和结尾。编码时启用该选项即可添加分隔符。解码时,如果存在这些分隔符,工具会将其移除,因此两种格式都能处理。
最后一个不完整分组如何处理?
如果输入长度不是 4 的倍数,最后一组会用零字节填充后进行编码,然后只保留前 n 加 1 个字符。解码时会用 u 填充并丢弃多余字节,从而准确还原原始输入。
为什么我的输入被拒绝?
有效字符为 ! 到 u,以及 z。v 到 y 之类的字符、分组内的 z、末尾仅剩一个字符,或值超过 32 位的分组都无效。空白字符会被忽略。
它与 Z85 或 RFC 1924 Base85 相同吗?
不同。ZeroMQ 的 Z85 和 RFC 1924 使用不同的 85 字符字母表。此工具实现的是 Adobe 和 btoa 风格的 Ascii85,用于 PostScript、PDF 和 Python 的 base64.a85encode。
为什么解码时会报告 UTF-8 无效?
Ascii85 通常用于保存压缩的 PDF 流等二进制数据。该工具只显示有效的 UTF-8 解码文本;如果数据无效,则会报告错误,而不会打印无法读取的字节。
非 ASCII 字符如何编码?
文本会先转换为 UTF-8,因此带重音符号的字母和表情符号在编码前会分别变成多个字节。解码后会还原为相同的字符。
最多可以转换多少数据?
每次请求最多可处理 5 MiB 文本。转换在服务器上运行,输入不会被存储。