Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方式。这 64 个字符包括 26 个大写字母、26 个小写字母、10 个数字以及两个符号(通常是"+"和"/"),外加用于补位的"="符号。
Base64 编码主要有以下几种规范:
索引 | 字符 | 索引 | 字符 | 索引 | 字符 | 索引 | 字符 |
---|---|---|---|---|---|---|---|
0 | A | 16 | Q | 32 | g | 48 | w |
1 | B | 17 | R | 33 | h | 49 | x |
2 | C | 18 | S | 34 | i | 50 | y |
3 | D | 19 | T | 35 | j | 51 | z |
4 | E | 20 | U | 36 | k | 52 | 0 |
5 | F | 21 | V | 37 | l | 53 | 1 |
6 | G | 22 | W | 38 | m | 54 | 2 |
7 | H | 23 | X | 39 | n | 55 | 3 |
8 | I | 24 | Y | 40 | o | 56 | 4 |
9 | J | 25 | Z | 41 | p | 57 | 5 |
10 | K | 26 | a | 42 | q | 58 | 6 |
11 | L | 27 | b | 43 | r | 59 | 7 |
12 | M | 28 | c | 44 | s | 60 | 8 |
13 | N | 29 | d | 45 | t | 61 | 9 |
14 | O | 30 | e | 46 | u | 62 | + |
15 | P | 31 | f | 47 | v | 63 | / |
// 编码
const encoded = btoa('Hello, World!');
console.log(encoded); // SGVsbG8sIFdvcmxkIQ==
// 解码
const decoded = atob('SGVsbG8sIFdvcmxkIQ==');
console.log(decoded); // Hello, World!
import base64
# 编码
text = "Hello, World!"
encoded = base64.b64encode(text.encode('utf-8'))
print(encoded.decode('utf-8')) # SGVsbG8sIFdvcmxkIQ==
# 解码
decoded = base64.b64decode('SGVsbG8sIFdvcmxkIQ==')
print(decoded.decode('utf-8')) # Hello, World!
import java.util.Base64;
// 编码
String text = "Hello, World!";
String encoded = Base64.getEncoder().encodeToString(text.getBytes());
System.out.println(encoded); // SGVsbG8sIFdvcmxkIQ==
// 解码
byte[] decoded = Base64.getDecoder().decode("SGVsbG8sIFdvcmxkIQ==");
System.out.println(new String(decoded)); // Hello, World!
// 编码
$text = "Hello, World!";
$encoded = base64_encode($text);
echo $encoded; // SGVsbG8sIFdvcmxkIQ==
// 解码
$decoded = base64_decode("SGVsbG8sIFdvcmxkIQ==");
echo $decoded; // Hello, World!
using System;
using System.Text;
// 编码
string text = "Hello, World!";
string encoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(text));
Console.WriteLine(encoded); // SGVsbG8sIFdvcmxkIQ==
// 解码
byte[] data = Convert.FromBase64String("SGVsbG8sIFdvcmxkIQ==");
string decoded = Encoding.UTF8.GetString(data);
Console.WriteLine(decoded); // Hello, World!
package main
import (
"encoding/base64"
"fmt"
)
func main() {
// 编码
text := "Hello, World!"
encoded := base64.StdEncoding.EncodeToString([]byte(text))
fmt.Println(encoded) // SGVsbG8sIFdvcmxkIQ==
// 解码
decoded, err := base64.StdEncoding.DecodeString("SGVsbG8sIFdvcmxkIQ==")
if err != nil {
fmt.Println("解码错误:", err)
return
}
fmt.Println(string(decoded)) // Hello, World!
}