Java 和 JavaScript 真正通用的Base64编码详解
什么是Base64编码?
Base64 编码是一种通过将二进制数据转换成 ASCII 字符串的编码方式,常用于在文本协议中传输二进制数据。基本原理是将连续的3个字节数据分成4组,然后将每组数据转换成4个字符,采用“=”进行填充。
Java中的Base64编码
在 Java 中,使用 java.util.Base64 类实现 Base64 编码和解码。示例代码如下:
import java.util.Base64;
public class Base64Demo {
public static void main(String[] args) {
String text = "Java and JavaScript are different";
String encodedText = Base64.getEncoder().encodeToString(text.getBytes());
System.out.println("Encoded text: " + encodedText);
byte[] decodedBytes = Base64.getDecoder().decode(encodedText);
String decodedText = new String(decodedBytes);
System.out.println("Decoded text: " + decodedText);
}
}
以上代码中首先使用 Base64.getEncoder()
获取一个编码器实例,然后将需要编码的字符串转换成字节数组后调用 encodeToString()
方法进行编码得到 base64 字符串。接着使用 Base64.getDecoder()
获取一个解码器实例,然后调用 decode()
方法解码出原始字符串。
JavaScript中的Base64编码
在 JavaScript 中,可以使用浏览器内置对象 window.btoa()
和 window.atob()
实现 Base64 编码和解码。示例代码如下:
var text = 'Java and JavaScript are different';
var encodedText = window.btoa(text);
console.log('Encoded text: ' + encodedText);
var decodedText = window.atob(encodedText);
console.log('Decoded text: ' + decodedText);
以上代码中先使用 window.btoa()
方法将需要编码的字符串进行 base64 编码,然后使用 window.atob()
方法将编码后的 base64 字符串进行解码得到原始字符串。
Java和JavaScript通用的Base64编码
Java 中使用的 Base64 编码方式和 JavaScript 中使用的 Base64 编码方式存在一些差异,有些数据在进行编码和解码时会出现问题。因此,为了使Java和JavaScript的Base64编码方式通用,可以使用一些第三方库,比如Apache Commons Codec库的Base64类,在这里我们就不展开展示了。
示例一
下面是一个在Java中进行Base64编码,然后在JavaScript中进行解码的示例:
Java代码
import java.util.Base64;
public class Base64Demo {
public static void main(String[] args) {
String text = "Java and JavaScript are different";
String encodedText = Base64.getEncoder().encodeToString(text.getBytes());
System.out.println("Encoded text: " + encodedText);
}
}
JavaScript代码
var encodedText = 'SmF2YSBhbmQgSmF2aWNodFNlY3JldCBoYXMgZGlmZmVyZW50';
var decodedText = window.atob(encodedText);
console.log('Decoded text: ' + decodedText);
以上代码中,我们先在Java中将字符串编码成了base64字符串,并将其输出,然后在JavaScript中直接使用已编码的base64字符串进行解码操作。
示例二
下面是一个在JavaScript中进行Base64编码,然后在Java中进行解码的示例:
JavaScript代码
var text = 'Java and JavaScript are different';
var encodedText = window.btoa(text);
console.log('Encoded text: ' + encodedText);
Java代码
import java.util.Base64;
public class Base64Demo {
public static void main(String[] args) {
String encodedText = "SmF2YSBhbmQgSmF2aWNodFNlY3JldCBhcmUgZGlmZmVyZW50";
byte[] decodedBytes = Base64.getDecoder().decode(encodedText);
String decodedText = new String(decodedBytes);
System.out.println("Decoded text: " + decodedText);
}
}
以上代码中,我们先在JavaScript中将字符串编码成了base64字符串,并将其输出,然后在Java中直接使用已编码的base64字符串进行解码操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 和 JavaScript 真正通用的Base64编码详解 - Python技术站