Java 8Base64 http://docs.oracle.com/javase/8/docs/api/java/util/Base64.html库有两种可用于 URI 构建的变体:“基本”变体和“URL 和文件名安全”变体。该文档指出RFC 4648 https://www.rfc-editor.org/rfc/rfc4648表 2 作为差异的解释。
阅读规范后,我仍然不清楚这两种编码之间的实际区别是什么:这两种标准都“广泛”支持吗?具体来说浏览器呢?对于数据 URI 编码,是否建议使用 URL 和文件名安全编码?是否存在已知的支持限制?
最简单的方法是提供一个示例(恕我直言):
Base64.Encoder enc = Base64.getEncoder();
Base64.Encoder encURL = Base64.getUrlEncoder();
byte[] bytes = enc.encode("subjects?_d".getBytes());
byte[] bytesURL = encURL.encode("subjects?_d".getBytes());
System.out.println(new String(bytes)); // c3ViamVjdHM/X2Q= notice the "/"
System.out.println(new String(bytesURL)); // c3ViamVjdHM_X2Q= notice the "_"
Base64.Decoder dec = Base64.getDecoder();
Base64.Decoder decURL = Base64.getUrlDecoder();
byte[] decodedURL = decURL.decode(bytesURL);
byte[] decoded = dec.decode(bytes);
System.out.println(new String(decodedURL));
System.out.println(new String(decoded));
注意一个人怎么样URL safe
另一个不是。
事实上,如果你看一下实现,就会发现有两个用于编码的查找表:toBase64
and toBase64URL
。只有两个字符不同:
+
and /
for toBase64
versus -
and _
for toBase64URL
.
所以看来你的问题某个 URI 是否安全并且应该在那里使用?;答案是肯定的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)