为什么 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 的结果将始终相同。

(这只是一个猜测,但却是一个有根据的猜测。如果你想验证它,你总是可以 运行 基准...)