java base64与字符串String之间的相互转换
1.用法介绍
方式一:DatatypeConverter
说明:使用jdk自带的DatatypeConverter.java类实现,但是jdk版本必须>=1.6。
import java.io.UnsupportedEncodingException;
import javax.xml.bind.DatatypeConverter;
编码
/**
* base64编码之方法一
* @explain DatatypeConverter.java实现
* @param str
* 待编码字符串
* @return 编码字符串
*/
public static String encode(String str) {
// base64字符串
String base64Str = "";
try {
// String-->byte[]
byte[] data = str.getBytes("utf-8");
// 编码
base64Str = DatatypeConverter.printBase64Binary(data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64Str;
}
解码
/**
* base64解码之方法一
* @explain DatatypeConverter.java实现
* @param base64Str
* 待解码字符串
* @return 解码字符串
*/
public static String decode(String base64Str) {
// 解码后的字符串
String str = "";
// 解码
byte[] base64Data = DatatypeConverter.parseBase64Binary(base64Str);
try {
// byte[]-->String
str = new String(base64Data, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
方式二:Base64
说明:使用jdk自带的Base64.java类实现,但是jdk版本必须>=1.8。
import java.io.UnsupportedEncodingException;
import java.util.Base64;
编码
/**
* base64编码之方法二
* @explain Base64.java实现
* @param str
* 待编码字符串
* @return 编码字符串
*/
public static String encode2(String str) {
// base64字符串
String base64Str = "";
try {
// String-->byte[]
byte[] data = str.getBytes("utf-8");
// 编码
base64Str =Base64.getEncoder().encodeToString(data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64Str;
}
解码
/**
* base64解码之方法二
* @explain Base64.java实现
* @param base64Str
* 待解码字符串
* @return 解码字符串
*/
public static String decode2(String base64Str) {
// 解码后的字符串
String str = "";
// 解码
byte[] base64Data = Base64.getDecoder().decode(base64Str);
try {
// byte[]-->String
str = new String(base64Data, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
方式三:Base64
所需jar包:commons-codec.jar
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
编码
/**
* base64编码之方法三
* @explain Base64.java实现
* @param str
* 待编码字符串
* @return 编码字符串
*/
public static String encode3(String str) {
// base64字符串
String base64Str = "";
try {
// String-->byte[]
byte[] data = str.getBytes("utf-8");
// 编码
base64Str =Base64.encodeBase64String(data).replaceAll("\r\n", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64Str;
}
解码
/**
* base64解码之方法三
* @explain Base64.java实现
* @param base64Str
* 待解码字符串
* @return 解码字符串
*/
public static String decode3(String base64Str) {
// 解码后的字符串
String str = "";
// 解码
byte[] base64Data = Base64.decodeBase64(base64Str);
try {
// byte[]-->String
str = new String(base64Data, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
20200824
方式四:
所需jar包:tomcat-coyote.jar
编码与解码方式与方式三一样,这里不再赘述。
20200827
方式五:
所需jar包:spring-core.jar
用法大同小异,不再赘述。
另外,需要说明的是关于base64编码与解码的方式不只有这几种方式, 一般情况下,只有jar包中集成的base64相关的class类,就可以直接导包引用。
2.测试
public static void main(String[] args) {
String str = "http://www.cnblogs.com/Marydon20170307";
String base64 = Base64Utils.encode(str);// aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9NYXJ5ZG9uMjAxNzAzMDc=
System.out.println(base64);
String str2 = Base64Utils.decode(base64);
System.out.println(str.equals(str2));// true
}
3.效率比较
快-->慢:方式二 > 方式一 > 方式三
因此,如果项目用的是jdk1.8,最佳选择是方式二;jdk1.6,最佳选择是方式一。
20200824
4.只知其一不知其二
用了这么久的base64,但是,在前段时间的接口对接过程中,却因为它栽了跟头,有必要进行一次总结回顾。
base64,我们通常的用途有两种:第一种,图片转码;第二种,作为数据加密的方式、步骤之一。
encodeBase64和encodeBase64URLSafe
一般情况下,我们只用到了第一个,没有用到第二个,绝大部分人用的也是第一个,网站在线解析也是如此,这就造成了我们只知其一不知其二。
二者区别:
encodeBase64会对字符串3位一组自动补全,因而最后可能会出现 == 或者 =(缺一个补一个=,缺两个补两个=);
encodeBase64URLSafe则是按照字符串实际位数进行加密,不补全,不会出现 == 或者 =
举个例子:
待编码字符串:Marydon,编码后分别是:TWFyeWRvbg、TWFyeWRvbg==。
上面的区别介绍是从网上找到的,但并没有说全,再看另外两个例子
待编码字符串:
{"RegionCode":"410000","IvcAgcCode":"507403","Items":[{"ItemCode":"913001001","ItemName":"诊察费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"诊察费"}]},{"ItemCode":"913001002","ItemName":"检查费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"检查费"}]},{"ItemCode":"913001003","ItemName":"化验费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"化验费"}]},{"ItemCode":"913001004","ItemName":"治疗费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"治疗费"}]},{"ItemCode":"913001005","ItemName":"手术费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"手术费"}]},{"ItemCode":"913001006","ItemName":"卫生材料费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"卫生材料费"}]},{"ItemCode":"913001007","ItemName":"西药费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"西药费"}]},{"ItemCode":"913001008","ItemName":"中药饮片","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"中药饮片"}]},{"ItemCode":"913001009","ItemName":"中成药费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"中成药费"}]},{"ItemCode":"913001010","ItemName":"挂号费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"挂号费"}]},{"ItemCode":"913001011","ItemName":"一般诊疗费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"一般诊疗费"}]},{"ItemCode":"913001012","ItemName":"其他门诊费","IvcType":"1","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"其他门诊费"}]},{"ItemCode":"913002001","ItemName":"床位费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"床位费"}]},{"ItemCode":"913002002","ItemName":"诊察费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"诊察费"}]},{"ItemCode":"913002003","ItemName":"检查费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"检查费"}]},{"ItemCode":"913002004","ItemName":"化验费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"化验费"}]},{"ItemCode":"913002005","ItemName":"治疗费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"治疗费"}]},{"ItemCode":"913002006","ItemName":"手术费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"手术费"}]},{"ItemCode":"913002007","ItemName":"护理费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"护理费"}]},{"ItemCode":"913002008","ItemName":"卫生材料费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"卫生材料费"}]},{"ItemCode":"913002009","ItemName":"西药费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"西药费"}]},{"ItemCode":"913002010","ItemName":"中药饮片","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"中药饮片"}]},{"ItemCode":"913002011","ItemName":"中成药费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"中成药费"}]},{"ItemCode":"913002012","ItemName":"一般诊疗费","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"一般诊疗费"}]},{"ItemCode":"913002013","ItemName":"其他住院费用","IvcType":"2","Stands":[{"UpLimit":0,"StandCode":"001","LowerLimit":0,"Unit":"元","StandName":"其他住院费用"}]}]}
encodeBase64编码结果:
eyJSZWdpb25Db2RlIjoiNDEwMDAwIiwiSXZjQWdjQ29kZSI6IjUwNzQwMyIsIkl0ZW1zIjpbeyJJdGVtQ29kZSI6IjkxMzAwMTAwMSIsIkl0ZW1OYW1lIjoi6K+K5a+f6LS5IiwiSXZjVHlwZSI6IjEiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLor4rlr5/otLkifV19LHsiSXRlbUNvZGUiOiI5MTMwMDEwMDIiLCJJdGVtTmFtZSI6IuajgOafpei0uSIsIkl2Y1R5cGUiOiIxIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5qOA5p+l6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAxMDAzIiwiSXRlbU5hbWUiOiLljJbpqozotLkiLCJJdmNUeXBlIjoiMSIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6IuWMlumqjOi0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMTAwNCIsIkl0ZW1OYW1lIjoi5rK755aX6LS5IiwiSXZjVHlwZSI6IjEiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLmsrvnlpfotLkifV19LHsiSXRlbUNvZGUiOiI5MTMwMDEwMDUiLCJJdGVtTmFtZSI6IuaJi+acr+i0uSIsIkl2Y1R5cGUiOiIxIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5omL5pyv6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAxMDA2IiwiSXRlbU5hbWUiOiLljavnlJ/mnZDmlpnotLkiLCJJdmNUeXBlIjoiMSIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6IuWNq+eUn+adkOaWmei0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMTAwNyIsIkl0ZW1OYW1lIjoi6KW/6I2v6LS5IiwiSXZjVHlwZSI6IjEiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLopb/oja/otLkifV19LHsiSXRlbUNvZGUiOiI5MTMwMDEwMDgiLCJJdGVtTmFtZSI6IuS4reiNr+mlrueJhyIsIkl2Y1R5cGUiOiIxIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5Lit6I2v6aWu54mHIn1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAxMDA5IiwiSXRlbU5hbWUiOiLkuK3miJDoja/otLkiLCJJdmNUeXBlIjoiMSIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6IuS4reaIkOiNr+i0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMTAxMCIsIkl0ZW1OYW1lIjoi5oyC5Y+36LS5IiwiSXZjVHlwZSI6IjEiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLmjILlj7fotLkifV19LHsiSXRlbUNvZGUiOiI5MTMwMDEwMTEiLCJJdGVtTmFtZSI6IuS4gOiIrOiviueWl+i0uSIsIkl2Y1R5cGUiOiIxIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5LiA6Iis6K+K55aX6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAxMDEyIiwiSXRlbU5hbWUiOiLlhbbku5bpl6jor4rotLkiLCJJdmNUeXBlIjoiMSIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6IuWFtuS7lumXqOiviui0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMjAwMSIsIkl0ZW1OYW1lIjoi5bqK5L2N6LS5IiwiSXZjVHlwZSI6IjIiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLluorkvY3otLkifV19LHsiSXRlbUNvZGUiOiI5MTMwMDIwMDIiLCJJdGVtTmFtZSI6IuiviuWvn+i0uSIsIkl2Y1R5cGUiOiIyIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi6K+K5a+f6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAyMDAzIiwiSXRlbU5hbWUiOiLmo4Dmn6XotLkiLCJJdmNUeXBlIjoiMiIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6IuajgOafpei0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMjAwNCIsIkl0ZW1OYW1lIjoi5YyW6aqM6LS5IiwiSXZjVHlwZSI6IjIiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLljJbpqozotLkifV19LHsiSXRlbUNvZGUiOiI5MTMwMDIwMDUiLCJJdGVtTmFtZSI6Iuayu+eWl+i0uSIsIkl2Y1R5cGUiOiIyIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5rK755aX6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAyMDA2IiwiSXRlbU5hbWUiOiLmiYvmnK/otLkiLCJJdmNUeXBlIjoiMiIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6IuaJi+acr+i0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMjAwNyIsIkl0ZW1OYW1lIjoi5oqk55CG6LS5IiwiSXZjVHlwZSI6IjIiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLmiqTnkIbotLkifV19LHsiSXRlbUNvZGUiOiI5MTMwMDIwMDgiLCJJdGVtTmFtZSI6IuWNq+eUn+adkOaWmei0uSIsIkl2Y1R5cGUiOiIyIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5Y2r55Sf5p2Q5paZ6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAyMDA5IiwiSXRlbU5hbWUiOiLopb/oja/otLkiLCJJdmNUeXBlIjoiMiIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6Iuilv+iNr+i0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMjAxMCIsIkl0ZW1OYW1lIjoi5Lit6I2v6aWu54mHIiwiSXZjVHlwZSI6IjIiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLkuK3oja/ppa7niYcifV19LHsiSXRlbUNvZGUiOiI5MTMwMDIwMTEiLCJJdGVtTmFtZSI6IuS4reaIkOiNr+i0uSIsIkl2Y1R5cGUiOiIyIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5Lit5oiQ6I2v6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAyMDEyIiwiSXRlbU5hbWUiOiLkuIDoiKzor4rnlpfotLkiLCJJdmNUeXBlIjoiMiIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6IuS4gOiIrOiviueWl+i0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMjAxMyIsIkl0ZW1OYW1lIjoi5YW25LuW5L2P6Zmi6LS555SoIiwiSXZjVHlwZSI6IjIiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLlhbbku5bkvY/pmaLotLnnlKgifV19XX0K
encodeBase64URLSafe编码结果:
eyJSZWdpb25Db2RlIjoiNDEwMDAwIiwiSXZjQWdjQ29kZSI6IjUwNjQwMiIsIkl0ZW1zIjpbeyJJdGVtQ29kZSI6IjkxMzAwMTAwMiIsIkl0ZW1OYW1lIjoi5qOA5p-l6LS5IiwiSXZjVHlwZSI6IjEiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLmo4Dmn6XotLkifV19LHsiSXRlbUNvZGUiOiI5MTMwMDEwMDMiLCJJdGVtTmFtZSI6IuWMlumqjOi0uSIsIkl2Y1R5cGUiOiIyIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5YyW6aqM6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAxMDA0IiwiSXRlbU5hbWUiOiLmsrvnlpfotLkiLCJJdmNUeXBlIjoiMSIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6Iuayu-eWl-i0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMTAwNSIsIkl0ZW1OYW1lIjoi5omL5pyv6LS5IiwiSXZjVHlwZSI6IjIiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLmiYvmnK_otLkifV19LHsiSXRlbUNvZGUiOiI5MTMwMDEwMDYiLCJJdGVtTmFtZSI6IuWNq-eUn-adkOaWmei0uSIsIkl2Y1R5cGUiOiIyIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5Y2r55Sf5p2Q5paZ6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAxMDA3IiwiSXRlbU5hbWUiOiLopb_oja_otLkiLCJJdmNUeXBlIjoiMSIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6Iuilv-iNr-i0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMTAwOCIsIkl0ZW1OYW1lIjoi5Lit6I2v6aWu54mHIiwiSXZjVHlwZSI6IjEiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLkuK3oja_ppa7niYcifV19LHsiSXRlbUNvZGUiOiI5MTMwMDEwMDkiLCJJdGVtTmFtZSI6IuS4reaIkOiNr-i0uSIsIkl2Y1R5cGUiOiIyIiwiU3RhbmRzIjpbeyJVcExpbWl0IjowLCJTdGFuZENvZGUiOiIwMDEiLCJMb3dlckxpbWl0IjowLCJVbml0Ijoi5YWDIiwiU3RhbmROYW1lIjoi5Lit5oiQ6I2v6LS5In1dfSx7Ikl0ZW1Db2RlIjoiOTEzMDAxMDEwIiwiSXRlbU5hbWUiOiLmjILlj7fotLkiLCJJdmNUeXBlIjoiMSIsIlN0YW5kcyI6W3siVXBMaW1pdCI6MCwiU3RhbmRDb2RlIjoiMDAxIiwiTG93ZXJMaW1pdCI6MCwiVW5pdCI6IuWFgyIsIlN0YW5kTmFtZSI6IuaMguWPt-i0uSJ9XX0seyJJdGVtQ29kZSI6IjkxMzAwMTAxMSIsIkl0ZW1OYW1lIjoi5LiA6Iis6K-K55aX6LS5IiwiSXZjVHlwZSI6IjEiLCJTdGFuZHMiOlt7IlVwTGltaXQiOjAsIlN0YW5kQ29kZSI6IjAwMSIsIkxvd2VyTGltaXQiOjAsIlVuaXQiOiLlhYMiLCJTdGFuZE5hbWUiOiLkuIDoiKzor4rnlpfotLkifV19XX0
base64待编码字符串:
{"Type":1,"PayerPartyType":"1","RegionCode":"410000","SerialNumber":"0000007519","IvcAgcCode":"506402","MainExt":{"OtherPayAmount":"0","MedicalDate":"20190117","FundPayAmount":"0","MedicalType":"门诊","MedicalInsuranceType":"新农合","AccountPayAmount":"0","Gender":"男","OwnPayAmount":"15.00","SelfpaymentAmount":"0","MedicalInsuranceID":"104381991001","OrgType":"综合医院","PatientNumber":"1000100201","SelfpaymentCost":"0"},"PayerPartyName":"马露","RepCreater":"李四","Items":[{"ItemCode":"9940301020","ItemRemark":[],"ItemQuantity":"1","Amount":"10.00","ItemName":"检查费","ItemStd":"10.00","ItemUnit":[],"AuxItem":[{"AuxItemQuantity":"1","AuxItemAmount":"10.0000","AuxItemStd":"10.0000","AuxItemRelatedCode":"9940301020","AuxItemUnit":"人次","AuxItemRemark":"无自付","AuxItemRelatedName":"检查费","AuxItemName":"角膜曲率检查"}]},{"ItemCode":"9940301070","ItemRemark":[],"ItemQuantity":"1","Amount":"5.00","ItemName":"西药费","ItemStd":"5.00","ItemUnit":[],"AuxItem":[{"AuxItemQuantity":"1","AuxItemAmount":"5.0000","AuxItemStd":"5.0000","AuxItemRelatedCode":"9940301070","AuxItemUnit":"支","AuxItemRemark":"无自付","AuxItemRelatedName":"西药费","AuxItemName":"复方托吡卡胺滴眼液"}]}],"TotalAmount":"15.00","PayerPartyCode":[]}
base64编码结果:
eyJUeXBlIjoxLCJQYXllclBhcnR5VHlwZSI6IjEiLCJSZWdpb25Db2RlIjoiNDEwMDAwIiwiU2VyaWFsTnVtYmVyIjoiMDAwMDAwNzUxOSIsIkl2Y0FnY0NvZGUiOiI1MDY0MDIiLCJNYWluRXh0Ijp7Ik90aGVyUGF5QW1vdW50IjoiMCIsIk1lZGljYWxEYXRlIjoiMjAxOTAxMTciLCJGdW5kUGF5QW1vdW50IjoiMCIsIk1lZGljYWxUeXBlIjoi6Zeo6K-KIiwiTWVkaWNhbEluc3VyYW5jZVR5cGUiOiLmlrDlhpzlkIgiLCJBY2NvdW50UGF5QW1vdW50IjoiMCIsIkdlbmRlciI6IueUtyIsIk93blBheUFtb3VudCI6IjE1LjAwIiwiU2VsZnBheW1lbnRBbW91bnQiOiIwIiwiTWVkaWNhbEluc3VyYW5jZUlEIjoiMTA0MzgxOTkxMDAxIiwiT3JnVHlwZSI6Iue7vOWQiOWMu-mZoiIsIlBhdGllbnROdW1iZXIiOiIxMDAwMTAwMjAxIiwiU2VsZnBheW1lbnRDb3N0IjoiMCJ9LCJQYXllclBhcnR5TmFtZSI6IumprOmcsiIsIlJlcENyZWF0ZXIiOiLmnY7lm5siLCJJdGVtcyI6W3siSXRlbUNvZGUiOiI5OTQwMzAxMDIwIiwiSXRlbVJlbWFyayI6W10sIkl0ZW1RdWFudGl0eSI6IjEiLCJBbW91bnQiOiIxMC4wMCIsIkl0ZW1OYW1lIjoi5qOA5p-l6LS5IiwiSXRlbVN0ZCI6IjEwLjAwIiwiSXRlbVVuaXQiOltdLCJBdXhJdGVtIjpbeyJBdXhJdGVtUXVhbnRpdHkiOiIxIiwiQXV4SXRlbUFtb3VudCI6IjEwLjAwMDAiLCJBdXhJdGVtU3RkIjoiMTAuMDAwMCIsIkF1eEl0ZW1SZWxhdGVkQ29kZSI6Ijk5NDAzMDEwMjAiLCJBdXhJdGVtVW5pdCI6IuS6uuasoSIsIkF1eEl0ZW1SZW1hcmsiOiLml6Doh6rku5giLCJBdXhJdGVtUmVsYXRlZE5hbWUiOiLmo4Dmn6XotLkiLCJBdXhJdGVtTmFtZSI6IuinkuiGnOabsueOh-ajgOafpSJ9XX0seyJJdGVtQ29kZSI6Ijk5NDAzMDEwNzAiLCJJdGVtUmVtYXJrIjpbXSwiSXRlbVF1YW50aXR5IjoiMSIsIkFtb3VudCI6IjUuMDAiLCJJdGVtTmFtZSI6Iuilv-iNr-i0uSIsIkl0ZW1TdGQiOiI1LjAwIiwiSXRlbVVuaXQiOltdLCJBdXhJdGVtIjpbeyJBdXhJdGVtUXVhbnRpdHkiOiIxIiwiQXV4SXRlbUFtb3VudCI6IjUuMDAwMCIsIkF1eEl0ZW1TdGQiOiI1LjAwMDAiLCJBdXhJdGVtUmVsYXRlZENvZGUiOiI5OTQwMzAxMDcwIiwiQXV4SXRlbVVuaXQiOiLmlK8iLCJBdXhJdGVtUmVtYXJrIjoi5peg6Ieq5LuYIiwiQXV4SXRlbVJlbGF0ZWROYW1lIjoi6KW_6I2v6LS5IiwiQXV4SXRlbU5hbWUiOiLlpI3mlrnmiZjlkKHljaHog7rmu7TnnLzmtrIifV19XSwiVG90YWxBbW91bnQiOiIxNS4wMCIsIlBheWVyUGFydHlDb2RlIjpbXX0
base64编码结果:
eyJUeXBlIjoxLCJQYXllclBhcnR5VHlwZSI6IjEiLCJSZWdpb25Db2RlIjoiNDEwMDAwIiwiU2VyaWFsTnVtYmVyIjoiMDAwMDAwNzUxOSIsIkl2Y0FnY0NvZGUiOiI1MDY0MDIiLCJNYWluRXh0Ijp7Ik90aGVyUGF5QW1vdW50IjoiMCIsIk1lZGljYWxEYXRlIjoiMjAxOTAxMTciLCJGdW5kUGF5QW1vdW50IjoiMCIsIk1lZGljYWxUeXBlIjoi6Zeo6K+KIiwiTWVkaWNhbEluc3VyYW5jZVR5cGUiOiLmlrDlhpzlkIgiLCJBY2NvdW50UGF5QW1vdW50IjoiMCIsIkdlbmRlciI6IueUtyIsIk93blBheUFtb3VudCI6IjE1LjAwIiwiU2VsZnBheW1lbnRBbW91bnQiOiIwIiwiTWVkaWNhbEluc3VyYW5jZUlEIjoiMTA0MzgxOTkxMDAxIiwiT3JnVHlwZSI6Iue7vOWQiOWMu+mZoiIsIlBhdGllbnROdW1iZXIiOiIxMDAwMTAwMjAxIiwiU2VsZnBheW1lbnRDb3N0IjoiMCJ9LCJQYXllclBhcnR5TmFtZSI6IumprOmcsiIsIlJlcENyZWF0ZXIiOiLmnY7lm5siLCJJdGVtcyI6W3siSXRlbUNvZGUiOiI5OTQwMzAxMDIwIiwiSXRlbVJlbWFyayI6W10sIkl0ZW1RdWFudGl0eSI6IjEiLCJBbW91bnQiOiIxMC4wMCIsIkl0ZW1OYW1lIjoi5qOA5p+l6LS5IiwiSXRlbVN0ZCI6IjEwLjAwIiwiSXRlbVVuaXQiOltdLCJBdXhJdGVtIjpbeyJBdXhJdGVtUXVhbnRpdHkiOiIxIiwiQXV4SXRlbUFtb3VudCI6IjEwLjAwMDAiLCJBdXhJdGVtU3RkIjoiMTAuMDAwMCIsIkF1eEl0ZW1SZWxhdGVkQ29kZSI6Ijk5NDAzMDEwMjAiLCJBdXhJdGVtVW5pdCI6IuS6uuasoSIsIkF1eEl0ZW1SZW1hcmsiOiLml6Doh6rku5giLCJBdXhJdGVtUmVsYXRlZE5hbWUiOiLmo4Dmn6XotLkiLCJBdXhJdGVtTmFtZSI6IuinkuiGnOabsueOh+ajgOafpSJ9XX0seyJJdGVtQ29kZSI6Ijk5NDAzMDEwNzAiLCJJdGVtUmVtYXJrIjpbXSwiSXRlbVF1YW50aXR5IjoiMSIsIkFtb3VudCI6IjUuMDAiLCJJdGVtTmFtZSI6Iuilv+iNr+i0uSIsIkl0ZW1TdGQiOiI1LjAwIiwiSXRlbVVuaXQiOltdLCJBdXhJdGVtIjpbeyJBdXhJdGVtUXVhbnRpdHkiOiIxIiwiQXV4SXRlbUFtb3VudCI6IjUuMDAwMCIsIkF1eEl0ZW1TdGQiOiI1LjAwMDAiLCJBdXhJdGVtUmVsYXRlZENvZGUiOiI5OTQwMzAxMDcwIiwiQXV4SXRlbVVuaXQiOiLmlK8iLCJBdXhJdGVtUmVtYXJrIjoi5peg6Ieq5LuYIiwiQXV4SXRlbVJlbGF0ZWROYW1lIjoi6KW/6I2v6LS5IiwiQXV4SXRlbU5hbWUiOiLlpI3mlrnmiZjlkKHljaHog7rmu7TnnLzmtrIifV19XSwiVG90YWxBbW91bnQiOiIxNS4wMCIsIlBheWVyUGFydHlDb2RlIjpbXX0=
总的来说,二者区别有:
base64,编码可能会生成+,/,=,三种可能同时存在,也可能都不存在;
urlsafe,编码可能会生成-,最多有且只有这一种符号。
以后,谁再跟你谈标准的base64格式,你就可以锤他啦。
在上面介绍的5种方式中,方式三、方式四和方式五都支持base64URLSafe()方法。