C#中用Convert类进行Base64编解码需先通过Encoding.UTF8.GetBytes()将字符串转为字节数组,再调用Convert.ToBase64String()编码;解码则反向操作,且必须保持UTF-8编码一致,否则中文会乱码。

在C#中,使用 Convert 类的静态方法进行 Base64 编码和解码是最常用、最直接的方式,无需额外引用或安装包,.NET 框架原生支持。
将字符串编码为 Base64 字符串
需先将字符串转为字节数组(指定编码,通常用 UTF-8),再调用 Convert.ToBase64String():
- 字符串 → Encoding.UTF8.GetBytes() → byte[]
- byte[] → Convert.ToBase64String() → Base64 字符串
示例:
byte[] bytes = Encoding.UTF8.GetBytes(original);
string base64 = Convert.ToBase64String(bytes); // 得到 "SGVsbG8g5L2g5aW9"
将 Base64 字符串解码为原始字符串
反向操作:先用 Convert.FromBase64String() 解码为字节数组,再用对应编码还原为字符串:
- Base64 字符串 → Convert.FromBase64String() → byte[]
- byte[] → Encoding.UTF8.GetString() → 原始字符串
示例:
string base64 = "SGVsbG8g5L2g5aW9";byte[] bytes = Convert.FromBase64String(base64);
string decoded = Encoding.UTF8.GetString(bytes); // 得到 "Hello 世界"
注意编码一致性
编码和解码必须使用相同的字符编码(推荐 UTF-8),否则中文等非 ASCII 字符会乱码:
- 编码时用了 UTF8.GetBytes(),解码时就一定要用 UTF8.GetString()
- 避免混用
ASCIIEncoding或UnicodeEncoding,尤其处理中文时 - Base64 本身不关心内容含义,只对字节流做转换,语义由编码方式决定
异常处理建议
Base64 字符串若格式错误(如长度不是 4 的倍数、含非法字符),FromBase64String() 会抛出 FormatException:
- 可在解码前用正则粗略校验(可选):
^[A-Za-z0-9+/]*={0,2}$ - 更稳妥做法是 try-catch 并提示“无效的 Base64 字符串”
- 注意:空字符串或 null 需提前判断,避免传入
FromBase64String(null)抛出ArgumentNullException
基本上就这些。Convert 类的方法简洁可靠,适合绝大多数场景——只要记住“先转字节、再编/解码”,并保持编码统一,就不会出错。










