摘要
函数
根据 RFC 4648 第 4 节,使用标准字母表将 base64 编码的字符串解码为纯 ASCII。
使用 mode
选项指示的字母表将纯 ASCII 字符串编码为 base64。结果比原始数据大 33%。
根据 RFC 4648 第 4 节,使用标准字母表将 base64 “mime” 字符串解码为纯 ASCII。
类型
-type base64_alphabet() :: $A..$Z | $a..$z | $0..$9 | $+ | $/ | $- | $_ | $=.
Base 64 编码字母表,请参阅 RFC 4648。
-type base64_binary() :: binary().
Base 64 编码的二进制数据。
-type base64_mode() :: standard | urlsafe.
-type base64_string() :: [base64_alphabet()].
Base 64 编码的字符串。
-type byte_string() :: [byte()].
任意的八位字节序列。
-type decode_options() :: #{padding => boolean(), mode => base64_mode()}.
自定义解码函数的行为。
如果完全省略或部分省略,则默认值为 #{mode => standard, padding => true}
。
mode
选项可以是以下之一
standard
- 默认值。根据 RFC 4648 第 4 节,使用标准 base64 字母表解码给定的字符串,即"+"
和"/"
分别表示字节62
和63
,而"-"
和"_"
是非法字符。urlsafe
- 根据 RFC 4648 第 5 节,使用替代的“URL 和文件名安全”base64 字母表解码给定的字符串,即"-"
和"_"
分别表示字节62
和63
,而"+"
和"/"
是非法字符。
padding
选项可以是以下之一
true
- 默认值。检查编码字符串末尾的=
填充字符的数量是否正确。false
- 接受末尾缺少=
填充字符的编码字符串。
-type encode_options() :: #{padding => boolean(), mode => base64_mode()}.
自定义解码函数的行为。
如果完全省略或部分省略,则默认值为 #{mode => standard, padding => true}
。
mode
选项可以是以下之一
standard
- 默认值。根据 RFC 4648 第 4 节,使用标准 base64 字母表编码给定的字符串。urlsafe
- 根据 RFC 4648 第 5 节,使用替代的“URL 和文件名安全”base64 字母表编码给定的字符串。
padding
选项可以是以下之一
true
- 默认值。在编码字符串末尾附加正确数量的=
填充字符。false
- 跳过在编码字符串末尾附加=
填充字符。
函数
-spec decode(Base64) -> Data when Base64 :: base64_string() | base64_binary(), Data :: binary().
等同于 decode(Base64, #{})
。
-spec decode(Base64, Options) -> Data when Base64 :: base64_string() | base64_binary(), Options :: decode_options(), Data :: binary().
根据 RFC 4648 第 4 节,使用标准字母表将 base64 编码的字符串解码为纯 ASCII。
该函数将删除任何空白字符,并检查编码字符串末尾的 =
填充字符数量是否正确。
有关可以传递哪些选项的详细信息,请参阅 decode_options/0
。
示例:
1> base64:decode("AQIDBA==").
<<1,2,3,4>>
2> base64:decode("AQ ID BA==").
<<1,2,3,4>>
3> base64:decode("AQIDBA=").
** exception error: missing_padding
in function base64:decode_list/7 (base64.erl, line 734)
*** data to decode is missing final = padding characters, if this is intended, use the `padding => false` option
4> base64:decode("AQIDBA=", #{ padding => false }).
<<1,2,3,4>>
-spec decode_to_string(Base64) -> DataString when Base64 :: base64_string() | base64_binary(), DataString :: byte_string().
等同于 decode(Base64)
,但返回 byte_string/0
。
-spec decode_to_string(Base64, Options) -> DataString when Base64 :: base64_string() | base64_binary(), Options :: decode_options(), DataString :: byte_string().
等同于 decode(Base64, Options)
,但返回 byte_string/0
。
-spec encode(Data) -> Base64 when Data :: byte_string() | binary(), Base64 :: base64_binary().
等同于 encode(Data, #{})
。
-spec encode(Data, Options) -> Base64 when Data :: byte_string() | binary(), Options :: encode_options(), Base64 :: base64_binary().
使用 mode
选项指示的字母表将纯 ASCII 字符串编码为 base64。结果比原始数据大 33%。
有关可以传递哪些选项的详细信息,请参阅 encode_options/0
。
-spec encode_to_string(Data) -> Base64String when Data :: byte_string() | binary(), Base64String :: base64_string().
等同于 encode(Data)
,但返回 byte_string/0
。
-spec encode_to_string(Data, Options) -> Base64String when Data :: byte_string() | binary(), Options :: encode_options(), Base64String :: base64_string().
等同于 encode(Data, Options)
,但返回 byte_string/0
。
-spec mime_decode(Base64) -> Data when Base64 :: base64_string() | base64_binary(), Data :: binary().
-spec mime_decode(Base64, Options) -> Data when Base64 :: base64_string() | base64_binary(), Options :: decode_options(), Data :: binary().
根据 RFC 4648 第 4 节,使用标准字母表将 base64 “mime” 字符串解码为纯 ASCII。
该函数将删除任何非法字符。它不检查编码字符串末尾的 =
填充字符数量是否正确。
有关可以传递哪些选项的详细信息,请参阅 decode_options/0
。
示例:
1> base64:mime_decode("AQIDBA==").
<<1,2,3,4>>
2> base64:mime_decode("AQIDB=A=").
<<1,2,3,4>>
-spec mime_decode_to_string(Base64) -> DataString when Base64 :: base64_string() | base64_binary(), DataString :: byte_string().
等同于 mime_decode(Base64)
,但返回 byte_string/0
。
-spec mime_decode_to_string(Base64, Options) -> DataString when Base64 :: base64_string() | base64_binary(), Options :: decode_options(), DataString :: byte_string().