javascript

时间:2016-06-07 08:17:46

标签: javascript java base64

我有btoa javascript函数编码的Query参数。当点击url时,请求在java控制器内部调用的函数,我想解码Query参数(从javascript btoa编码)。我尝试过BASE64DecoderBase64.getDecoder(),但无法获得适当的价值。有没有其他方法可以这样做?

Java控制器

@RequestMapping(value = "decode/{email}", method = RequestMethod.GET)
    public String decodeEmail(Model model, @PathVariable String email){
        Decode decode = new Decode();
        decode.setEmail(email);
        decodeService.save(decode);
        return "decode/List";
    }

的JavaScript

var email = document.getElementById("email").value;
var encodedEmail = btoa(email);

示例

要编码的字符串:demo@demo.com

编码字符串:ZGVtb0BkZW1vLmNvbQ ==

2 个答案:

答案 0 :(得分:14)

Java 8有一个新的Base64包:

public void test() {
    String s = "demo@demo.com";
    String encoded = new String(Base64.getEncoder().encode(s.getBytes()));
    String decoded = new String(Base64.getDecoder().decode(encoded));
    System.out.println("S: " + s + " -> " + encoded + " -> " + decoded);
}

打印

S: demo@demo.com -> ZGVtb0BkZW1vLmNvbQ== -> demo@demo.com

还有其他编码器/解码器对 - 您可以找到适合您需要的mime encoder

答案 1 :(得分:0)

您的问题的答案在这里使用apache库:Base64 Encoding in Java

否则wiki定义的实现将执行:https://en.wikipedia.org/wiki/Base64#Sample_Implementation_in_Java