Rob*_*bin 1 java base64 clojure urlencode
我对 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=="
Run Code Online (Sandbox Code Playgroud)
输出也包含填充(最后两个等号)。我想从我的输出中删除填充。 https://docs.oracle.com/javase/8/docs/api/java/util/Base64.Encoder.html#withoutPadding--我知道这对解决我的问题很有用,但我不知道如何在 clojure 中使用withoutPadding()函数。我试过这样的事情:
user> (let [encoder (Base64/getUrlEncoder))]
(doto (java.util.Base64/Encoder (.withoutPadding (String. (.encode encoder (.getBytes "Hello StackOverflow"))))))
Run Code Online (Sandbox Code Playgroud)
但这是错误的。谁能告诉确切的解决方案?谢谢。
您必须调用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"
Run Code Online (Sandbox Code Playgroud)