flutter - Dart base64解码
问题描述
这是我的 base64 编码字符串:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiJkMjNiN2ViMy03MDgyLTRkZDktOGQ0OC1lMjU2YTM3OTNiOTciLCJyZWZyZXNoVG9rZW4iOiJiN2M3MTc4Yi04OWRjLTQxMDctYjUzNC1hOGZiOTNhMzEwNzAiLCJuYW1lIjoiTGVuIiwiaWF0IjoxNTczMDI4MjU2fQ
使用https://jwt.io/它可以正确解码但是当尝试base64.decode('--Base64String--);
在 Flutter 中使用时,它会给我这些错误
FormatException: Invalid character (at character 37)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiIzYWNiNzBjZS0wYzYxLT...
删除前面的字符串时.
(我只需要后面的信息.
)我得到这个错误
FormatException: Invalid length, must be multiple of four (at character 183)
...jLTQxMDctYjUzNC1hOGZiOTNhMzEwNzAiLCJuYW1lIjoiTGVuIiwiaWF0IjoxNTczMDI4MjU2fQ
有没有其他方法可以为 Dart 解码 base64 编码的字符串
解决方案
你可以base64.normalize
先用。
例如:
import 'dart:convert';
void main() {
final String b64 = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiJkMjNiN2ViMy03MDgyLTRkZDktOGQ0OC1lMjU2YTM3OTNiOTciLCJyZWZyZXNoVG9rZW4iOiJiN2M3MTc4Yi04OWRjLTQxMDctYjUzNC1hOGZiOTNhMzEwNzAiLCJuYW1lIjoiTGVuIiwiaWF0IjoxNTczMDI4MjU2fQ';
String foo = b64.split('.')[0];
List<int> res = base64.decode(base64.normalize(foo));
print(utf8.decode(res));
}
结果:
{"alg":"HS256","typ":"JWT"}
推荐阅读
- javascript - 预加载器 v-cloak 不显示文本加载
- aurelia - Aurelia 商店 - 状态正在改变的 UI 指示器
- angular-material - Angular Material Autocomplete - 无法读取未定义的属性“过滤器”
- terminal - 有人可以解释这个用于查找图像的终端命令是如何工作的吗?
- java - 添加scanf使Java中的processInputStream消失
- python - 为什么在这种情况下 feed_dict 使用更少的内存?
- python - 使用 PIL 将不同像素保存的图像复制到原始图像
- node.js - 尝试在谷歌表格 API 中使用“附加”时出现无效值错误
- javascript - JS错误:
.contains 不是函数,不知道为什么 - c# - 将“任何 CPU/首选 32 位”设置为 VS 中的默认构建设置背后的基本原理