首先区分加密与编码并不是一回事,
本节主要讲述常见的三种编解码方式,分别为:Unicode、URL、Base64。
-
常见编码算法:
- Unicode编码:每一字符都可变成以 \u 开头,长度为6的字符串。
- URL编码:以百分号%开头,全大写。由于中文在utf-8中大多数以3字节(即24比特位)表示,所以每个汉字都会变成以百分号%开头、紧接着2位16进制数,一共三份、总长度为9的字符串。
- Base64编码:把二进制数据变成文本格式,这样在很多文本中就可以处理二进制数据。例如要在电子邮件中添加一个二进制文件,就可以使用Base64编码,然后以文本的形式传送;或者将其他加密方式产生的二进制密文转化为十六进制的字符串密文。它会把原始数据的长度【约】增加1/3,但其他编码算法并不一定比其更优。
-
Java常见解码思路:
- 首先获取被编码的字符流,即byte[]。因为byte是二进制数0/1,相当于获取了最原始的二进制数据,1字节等于8位二进制数bit,范围从-128 ~ 127。
- 利用String等方式尝试不同的字符集,解码。
【本质】:用对应的“字符集”来解二进制码。
// 指定了一种编码方式 byte[] bytes = "中文".getBytes("GBK"); // 用相对应的 “字符集” 方式来解码 String msg = new String(bytes,