如何将纯文本转Base64 及将Base64字符串转换为Uint8List
开发问题解答
1. 纯文本转Base64格式
所有主流编程语言的标准库都内置Base64编解码能力,无需手动实现编码算法,直接调用标准API即可。
以常见开发场景为例:
- Dart/Flutter环境:先将纯文本转UTF-8字节数组,再编码为Base64字符串
import 'dart:convert'; String plainText = "待转换的纯文本内容"; String base64Result = base64Encode(utf8.encode(plainText));
- 浏览器JS环境:
const plainText = "待转换的纯文本内容"; const base64Result = btoa(unescape(encodeURIComponent(plainText)));
- Node.js环境:
const plainText = "待转换的纯文本内容"; const base64Result = Buffer.from(plainText, 'utf8').toString('base64');
注意:你从接口获取到的LzlqLzRRSmNSWGhw...开头的长字符串本身已经是标准Base64格式的图片数据,无需重复做纯文本转Base64操作,重复编码会导致数据损坏,后续无法正常解析为图片。
2. Base64字符串转Uint8List
Uint8List是Dart/Flutter生态的标准字节数组类型,直接用dart:convert内置的解码方法即可,无需引入第三方依赖:
import 'dart:convert'; // 替换为接口实际返回的完整Base64字符串 String base64StrFromApi = "你的接口返回的Base64字符串"; // 解码后直接得到Uint8List类型的图片字节数据,可直接传入Image.memory等组件渲染 Uint8List imageByteData = base64Decode(base64StrFromApi);
*常见踩坑提示:
- 如果接口返回的Base64带
data:image/jpeg;base64,、data:image/png;base64,这类Data URL前缀,需要先把逗号前的前缀内容截取删除,再传入解码,否则会触发格式错误。 - 注意校验Base64字符串长度,接口返回截断的不完整Base64也会导致解码失败。*
内容的提问来源于stack exchange,提问作者vowoker
相关产品推荐
相关产品推荐

