gpt4 book ai didi

根据 vcard 3.0 格式,用于 75 个字符行的 java base64 编码器

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:09 24 4
gpt4 key购买 nike

根据 VCard 3 格式的 RFC 2426,http://www.ietf.org/rfc/rfc2426.txt (第 2.4.1 节)

Long lines of encoded binary data SHOULD BE folded to 75 characters using the folding method defined in [MIME-DIR].

然而,根据 mime 规范(即 commons、migbase64 等),我见过的每个编码器都以 76 个字符折叠,而我发现那些允许指定行长度的编码器提到“行长度应该是 4 的倍数”。

有没有允许折叠 75 个字符的 Java 库?老实说,我应该担心“应该”而不是“必须”吗?

最佳答案

在查看了 base64 编码器之后,我回到了 rfc,经过一番反射(reflection),我认为 base64 编码器不需要折叠线。

当谈到数据的 base64 编码时,它提到了折叠:

2.4.1 BINARY
[...]Long lines of encoded binary data SHOULD BE folded to 75 characters
using the folding method defined in [MIME-DIR]

然后在 2.6 中提到折叠再次

2.6 Line Delimiting and Folding
[...] After generating a content line,
lines longer than 75 characters SHOULD be folded according to the
folding procedure described in [MIME DIR].

内容行定义为

contentline  = [group "."] name *(";" param ) ":" value CRLF

(重要的是它是“整行”而不仅仅是折叠的值)

当查看 2.4.1 时,它暗示二进制编码应该折叠行,但这似乎与内容行折叠本身 (2.6) 竞争。

如果二进制数据折叠和行折叠应用,那么将发生“双重折叠”我认为这不是故意的。 (因为我知道一些质问者会提到这些例子不是 75 个字符长..假装它们是..谢谢)即

PHOTO;ENCODING=b;TYPE=JPEG:MIICajCCAdOgAwIBAgICBEUwDQY <= line folded
MIICajCCAdOgAwI <=folded at 75 binary chars as per binary folding
kU6NuaJR+E9lJd8ux9JpuV8QS+w3wNThZJ9Tb2HNBr1B+GNO9fi75e <= line folded
[...]

更合理的解释是预期的输出是:

PHOTO;ENCODING=b;TYPE=JPEG:MIICajCCAdOgAwIBAgICBEUwDQY <=folded as per line folding
MIICajCCAdOgAwIkU6NuaJR+E9lJd8ux9JpuV8QS+w3wNThZJ9Tb2H <=folded as per line folding
NBr1B+GNO9fi75e[...]

我认为 2.4.1 基本上只是重申了 2.6 的文件夹要求,如果正确则意味着不需要 75 行的 base64 编码器,因为 vcard 本身的基本行折叠将达到预期的结果。

因此,除非被证明是错误的,否则我现在将采用这种解释。

关于根据 vcard 3.0 格式,用于 75 个字符行的 java base64 编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11684931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com