查看源码 base64 (stdlib v6.2)

提供 base64 编码和解码,请参阅 RFC 2045

摘要

类型

Base 64 编码字母表,请参阅 RFC 4648

Base 64 编码的二进制数据。

用于 编码解码的 Base 64 编码字母表选择器。请参阅 RFC 4648第 4 节第 5 节

Base 64 编码的字符串。

任意的八位字节序列。

自定义解码函数的行为。

自定义解码函数的行为。

函数

根据 RFC 4648 第 4 节,使用标准字母表将 base64 编码的字符串解码为纯 ASCII。

使用 mode 选项指示的字母表将纯 ASCII 字符串编码为 base64。结果比原始数据大 33%。

根据 RFC 4648 第 4 节,使用标准字母表将 base64 “mime” 字符串解码为纯 ASCII。

类型

链接到此类型

base64_alphabet()

查看源码 (未导出)
-type base64_alphabet() :: $A..$Z | $a..$z | $0..$9 | $+ | $/ | $- | $_ | $=.

Base 64 编码字母表,请参阅 RFC 4648

链接到此类型

base64_binary()

查看源码 (未导出)
-type base64_binary() :: binary().

Base 64 编码的二进制数据。

链接到此类型

base64_mode()

查看源码 (未导出)
-type base64_mode() :: standard | urlsafe.

用于 编码解码的 Base 64 编码字母表选择器。请参阅 RFC 4648第 4 节第 5 节

链接到此类型

base64_string()

查看源码 (未导出)
-type base64_string() :: [base64_alphabet()].

Base 64 编码的字符串。

链接到此类型

byte_string()

查看源码 (未导出)
-type byte_string() :: [byte()].

任意的八位字节序列。

链接到此类型

decode_options()

查看源码 (未导出)
-type decode_options() :: #{padding => boolean(), mode => base64_mode()}.

自定义解码函数的行为。

如果完全省略或部分省略,则默认值为 #{mode => standard, padding => true}

mode 选项可以是以下之一

  • standard - 默认值。根据 RFC 4648 第 4 节,使用标准 base64 字母表解码给定的字符串,即 "+""/" 分别表示字节 6263,而 "-""_" 是非法字符。

  • urlsafe - 根据 RFC 4648 第 5 节,使用替代的“URL 和文件名安全”base64 字母表解码给定的字符串,即 "-""_" 分别表示字节 6263,而 "+""/" 是非法字符。

padding 选项可以是以下之一

  • true - 默认值。检查编码字符串末尾的 = 填充字符的数量是否正确。

  • false - 接受末尾缺少 = 填充字符的编码字符串。

链接到此类型

encode_options()

查看源码 (未导出)
-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, #{})

链接到此函数

decode(Base64, Options)

查看源码 (自 OTP 26.0 起)
-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>>
链接到此函数

decode_to_string(Base64)

查看源码
-spec decode_to_string(Base64) -> DataString
                          when Base64 :: base64_string() | base64_binary(), DataString :: byte_string().

等同于 decode(Base64),但返回 byte_string/0

链接到此函数

decode_to_string(Base64, Options)

查看源码 (自 OTP 26.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, #{})

链接到此函数

encode(Data, Options)

查看源码 (自 OTP 26.0 起)
-spec encode(Data, Options) -> Base64
                when
                    Data :: byte_string() | binary(),
                    Options :: encode_options(),
                    Base64 :: base64_binary().

使用 mode 选项指示的字母表将纯 ASCII 字符串编码为 base64。结果比原始数据大 33%。

有关可以传递哪些选项的详细信息,请参阅 encode_options/0

链接到此函数

encode_to_string(Data)

查看源码
-spec encode_to_string(Data) -> Base64String
                          when Data :: byte_string() | binary(), Base64String :: base64_string().

等同于 encode(Data),但返回 byte_string/0

链接到此函数

encode_to_string(Data, Options)

查看源码 (自 OTP 26.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().

等同于 mime_decode_to_string(Base64, #{})

链接到此函数

mime_decode(Base64, Options)

查看源码 (自 OTP 26.0 起)
-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>>
链接到此函数

mime_decode_to_string(Base64)

查看源码
-spec mime_decode_to_string(Base64) -> DataString
                               when
                                   Base64 :: base64_string() | base64_binary(),
                                   DataString :: byte_string().

等同于 mime_decode(Base64),但返回 byte_string/0

链接到此函数

mime_decode_to_string(Base64, Options)

查看源码 (自 OTP 26.0 起)
-spec mime_decode_to_string(Base64, Options) -> DataString
                               when
                                   Base64 :: base64_string() | base64_binary(),
                                   Options :: decode_options(),
                                   DataString :: byte_string().

等同于 mime_decode(Base64, Options),但返回 byte_string/0