为什么 JDK8 的 Base64 使用 ISO-8859-1?
Why JDK8's Base64 uses ISO-8859-1?
我正在为一些受限环境编写自己的 BASE64 encoder/decoder。
我发现 Base64.Encoder#encodeString 说它使用 ISO-8859-1
从那些编码字节构造一个字符串。
我完全假设 ISO-8859-1
字符集也涵盖所有 base64 字母表。
有什么不使用 US-ASCII
的可能原因吗?
我怀疑它更有效率:从 ISO-8859-1 转换回文本 只是 将每个 byte
直接提升为 char
,而对于 ASCII,您需要检查 byte
是否为有效的 ASCII。当然,base64 的结果将始终相同。
(这只是一个猜测,但却是一个有根据的猜测。如果你想验证它,你总是可以 运行 基准...)
我正在为一些受限环境编写自己的 BASE64 encoder/decoder。
我发现 Base64.Encoder#encodeString 说它使用 ISO-8859-1
从那些编码字节构造一个字符串。
我完全假设 ISO-8859-1
字符集也涵盖所有 base64 字母表。
有什么不使用 US-ASCII
的可能原因吗?
我怀疑它更有效率:从 ISO-8859-1 转换回文本 只是 将每个 byte
直接提升为 char
,而对于 ASCII,您需要检查 byte
是否为有效的 ASCII。当然,base64 的结果将始终相同。
(这只是一个猜测,但却是一个有根据的猜测。如果你想验证它,你总是可以 运行 基准...)