gpt4 book ai didi

java - Java 8中basic和url base64编码的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:46 25 4
gpt4 key购买 nike

Java 8 Base64库有两种可用于 URI 构建的变体:“基本”变体和“URL 和文件名安全”变体。文档指向 RFC 4648表 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 安全 而另一个不是。

事实上,如果您查看实现,有两个用于编码的查找表:toBase64toBase64URL。只有两个字符不同:

toBase64

+/-_ >toBase64URL.

看来您的问题是一个安全的 URI 并且应该在那里使用?;答案是肯定的。

关于java - Java 8中basic和url base64编码的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com