java 如何获得Base64编码的数据而不填充?

q5lcpyga  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(136)

我对Clojure非常陌生。我对Java及其库函数没有任何经验。我在Clojure中编写了一个函数,它使用java.util.Base64/getUrlEncoder返回Base64编码的数据。我的代码如下所示:

user> (import java.util.Base64)
java.util.Base64
user> (let [encoder (Base64/getUrlEncoder)]
        (String. (.encode encoder (.getBytes "Hello StackOverflow"))))
"SGVsbG8gU3RhY2tPdmVyZmxvdw=="

如您所见,输出包含填充:最后两个等号我不想要那个填充物
我看到Java的Base64.Encoder类有一个'withoutPadding()'方法用于此目的,但我不知道如何在Clojure中使用它。我尝试了这样的方法:

user> (let [encoder (Base64/getUrlEncoder))]
        (doto (java.util.Base64/Encoder (.withoutPadding (String. (.encode encoder (.getBytes "Hello StackOverflow"))))))

但没有用我怎么能这么做

e3bfsja2

e3bfsja21#

你必须在Encoder本身上调用withoutPadding

user> (import java.util.Base64)
java.util.Base64
user> (let [encoder (Base64/getUrlEncoder)]
        (String. (.encode encoder (.getBytes "Hello StackOverflow"))))
"SGVsbG8gU3RhY2tPdmVyZmxvdw=="
user> (let [encoder (.withoutPadding (Base64/getUrlEncoder))]
        (String. (.encode encoder (.getBytes "Hello StackOverflow"))))
"SGVsbG8gU3RhY2tPdmVyZmxvdw"

相关问题