字符集
ANSI
ANSI是一套字符集,包含了英文字符。
ASCII
ASCII相当于是ANSI的一个实现。标准ASCII由1字节组成,最高位为校验位,其余7位使用0和1组成,ASCII扩展字符则使用8位定义字符。 
- 字符
0对应的数值是48 - 字符
A对应的数值是65 - 字符
a对应的数值是97
中文字符集
- GB2312:收录了6700多个汉字。对于英语字符,跟ASCII一样使用1字节编码。对非英部分,使用2字节编码。
- GBK:可以看做是GB2312的拓展,共收录了20000多个汉字
- GB18030:完全兼容GBK和GB2312,收录了少数民族的文字、日韩的文字,共收录汉字70000多个。
- BIG5:主要针对繁体中文,共收率13000个汉字。
Unicode
Unicode 字符集中包含了世界上几乎所有已知的字符。不过,Unicode 字符集并没有规定如何存储这些字符(也就是如何使用二进制数据表示这些字符)。
UTF-8、UTF-16、UTF-32
UTF-8、UTF-16、UTF-32相当于是Unicode的实现,定义了字符的编码
- UTF-8 使用 1 到 4 个字节为每个字符编码
- UTF-16 使用 2 或 4 个字节为每个字符编码
- UTF-32 固定位 4 个字节为每个字符编码
Base64编码
Base64编码是一种将二进制数据转换为可打印字符的编码方式。它将任意的二进制数据(如图片、音频、文本文件等)转换为由64个字符组成的可读字符串。
Base64编码的原理是将每3个字节的数据(24位)划分为4组,每组6位。然后,将每组6位的值映射到一个可打印字符集合中的对应字符。这样,每3个字节的数据被编码成4个字符。
Base64编码常见于网络通信和数据存储中,用于将二进制数据以文本的形式传输或存储。
Java中提供了java.util.Base64类,可以方便地进行Base64编码和解码操作。
Base64URL
Base64URL是一种对数据进行编码的方法,通常用于在网络传输中或在URL中传递数据。与标准Base64编码略有不同,Base64URL对一些字符进行了替换,以确保编码后的数据在URL中不会引起问题。
Base64URL的主要特点包括:
- 使用字符集
[A-Za-z0-9]表示数据,而不是Base64中的[A-Za-z0-9+/]。具体来说,Base64URL使用-代替+,使用_代替/,并且通常省略填充字符=。 - Base64URL编码不包含换行符,因此编码后的数据通常是单行的,适合在URL中传递。
这种编码方式常常用于处理需要在URL中传输的数据,如JSON Web Tokens(JWT)等。要注意的是,Base64URL编码并不提供加密功能,它只是一种编码方式,可以将二进制数据转换成文本形式以便传输。