如果是单纯只想用的话base64解码,导这个包进你的项目snakeyaml-1.17.jar, 里面有个类可以直接用 org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder 例如: String needToEncode = \"你想编码的字符串\"; String encoded = Base64Coder.encodeString(needToEncode); // 控制台输出:5L2g5oOz57yW56CB55qE5a2X56ym5Liy String decoded = Base64Coder.decodeString(encoded ); // 控制台输出:你想编码的字符串 Base64Coder这个类还提供了别的方法,可以自己看一下。 仅供参考。
MIME与SMTP的关系是怎样的?什么是quoted-printable编码和base64编码?
答:MIME全称是通用因特网邮件扩充MIME。它并没有改动或取代SMTP。MIME的意图是继续使用目前的RFC822格式base64解码,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。也就是说,MIME邮件可以在现有的电子邮件程序和协议下传送。下图表明了MIME和SMTP的关系:非ASCII码7位ASCII码MIMESMTPMIMESMTP7位ASCII码7位ASCII码非ASCII码用户用户quoted-printable编码:对于所有可打印的ASCII码,除特殊字符等号外,都不改变。等号和不可打印的ASCII码以及非ASCII码的数据的编码方法是:先将每个字节的二进制代码用两个十六进制数字表示,然后在前面再加上一个等号。base64编码是先把二进制代码划分为一个24位长的单元,然后把每个24位单元划分为4个6位组。每一个6位组按以下方法替换成ASCII码。6位的二进制代码共有64种不同的值,从1到63。用A表示0,用B表示1,等等。26个大写字母排列完毕后,接下去再排26个小写字母,再后面是10个数字,最后用+表示62,而用/表示63。再用两个连在一起的等号==和一个等号=分别表示最后一组的代码只有8位或16位。回车和换行都忽略,它们可在任何地方插入。
如何从request中取出base64字符串?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
// 将 s 进行 BASE64 编码
public static String getBASE64(String s) {
if (s == null) return null;
return (new sun.misc.BASE64Encoder()).encode( s.getBytes() );
}
// 将 BASE64 编码的字符串 s 进行解码
public static String getFromBASE64(String s) {
if (s == null) return null;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b);
} catch (Exception e) {
return null;
}
}