网站首页 > java教程 正文
1 Base64编码的应用场景分析
- 如微信中昵称特殊字符的处理,在向数据库中保存编码,取用时解码。
- 可以方便的将用户的任何输入转换成只包含特定字符的安全格式
- 某些系统中只能使用ASCII字符,通过Base64可以将非ASCII字符的数据转换成ASCII字符
- 如http协议当中的key value字段,必须进行URLEncode 不然出现的等号可能使解析失败 空格也会使http请求解析出现问题
2 Java8中的Base64编码
在Java7及7之前,要实代Base64编码,要么借助sun.misc.BASE64Encoder,或者apache commons-codec,再或者Guava、JAXB的DatatypeConverter,到了Java8,官方已经把Base64进行了重新优化,并直接放到了java.util包里了。
实现起来,比之前的都要简单优雅,性能卓越,无需引用第三方包。
///代码清单 1-1
public class CommonStringUtils {
///构建编码器
private final static Base64.Encoder ENCODER = Base64.getEncoder();
///构建解码器
private final static Base64.Decoder DECODER = Base64.getDecoder();
/**
* 解码
* @param str 需要解码的 String
* @return 解码后的 String
*/
public static String decoderStr(String str) {
try {
// decode 解码后为byte字节数组
return new String(DECODER.decode(str), "utf-8");
} catch (
UnsupportedEncodingException e) {
e.printStackTrace();
return str;
}
}
/**
*
* @param str 需要编码的字符串
* @return 返回编辑后的字符串
*/
public static String endoderStr(String str) {
try {
return ENCODER.encodeToString(str.getBytes("utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
}
12345678910111213141516171819202122232425262728293031323334353637383940414243
3 JS 中的Base64编码与解码
从IE10+浏览器开始,所有浏览器就原生提供了Base64编码、解码方法,使用语法如下:
//需要编码的字符串
var str ="";
// 编码
var encodeStr = window.btoa(str)
//需要解码的字符串
var decodeStr = "";
//解码
var dStr = window.atob(decodeStr)
12345678910
3 OC中的Base64编码与解码
//需要编码的字符串
NSString *string = @"";
//获取编码后的Data
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
//获取编码后的 String
//NSString *stringBase64 = [data base64Encoding]; // base64格式的字符串(不建议使用,用下面方法替代)
NSString *stringBase64 = [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; //
12345678
//需要解码的字符串
NSString *stringBase64 = @"";
//获取解码后的 NSData
NSData *data = [[NSData alloc] initWithBase64EncodedString:stringBase64 options:NSDataBase64DecodingIgnoreUnknownCharacters];
//获取解码后的 String
NSString *string =[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
123456
4 Flutter中的Base64编码与解码
使用dart:convert库进行编码解码
// base64库
import 'dart:convert' as convert;
class Base64Util {
///Base64加密
static String base64Encode(String str){
///
var content = convert.utf8.encode(str);
var digest = convert.base64Encode(content);
return digest;
}
///Base64解码
static String base64Decode(String data){
///获取解码后的字节数组
List<int> bytes = convert.base64Decode(data);
//获取解码的字条串
String result = convert.utf8.decode(bytes);
return result;
}
}
1234567891011121314151617181920
猜你喜欢
- 2024-10-05 java8新特性Base64(java8新特性Base64位)
- 2024-10-05 我的Java Web之路64 - 会话过期链接失效问题及转发和重定向解析
- 2024-10-05 Java Web项目部署(四)-Redis、Nginx
- 2024-10-05 “全栈2019”Java第八十四章:接口中嵌套接口详解
- 2024-10-05 “全栈2019”Java第九十八章:局部内部类访问作用域成员详解
- 2024-10-05 Spring Boot图片文件转Base64(springboot 图片文件转base64)
- 2024-10-05 “全栈2019”Java第八十五章:实现接口中的嵌套接口
- 2024-10-05 一条垃圾SQL,把 64 核 CPU 快跑崩了
- 2024-10-05 Base64与URLBase64浅析(base64_url)
- 2024-10-05 java处理图片与base64编码互相转换
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)