You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Convert.FromBase64String时遇Base64字符数组长度无效异常求助

解决Convert.FromBase64String的“Invalid length for a base-64 char array”异常

以下是针对问题的具体排查和解决步骤:

  • 清理Base64字符串中的非法字符
    Base64仅允许A-Z、a-z、0-9、+、/、=这些字符,记事本保存时可能自动插入换行、空格或不可见字符,先过滤掉非允许字符:

    var cleanBase64 = new string(myString.Where(c => 
        (c >= 'A' && c <= 'Z') || 
        (c >= 'a' && c <= 'z') || 
        (c >= '0' && c <= '9') || 
        c == '+' || c == '/' || c == '=').ToArray());
    
  • 正确修正Base64长度
    补=只能在字符串末尾,确保长度为4的倍数:

    int mod = cleanBase64.Length % 4;
    if (mod != 0)
    {
        cleanBase64 += new string('=', 4 - mod);
    }
    
  • 规避记事本UTF-8 BOM问题
    记事本默认保存UTF-8文件时会添加BOM(字节顺序标记),读取时会混入非法字符,读取文件时指定无BOM的UTF-8编码:

    string myString = File.ReadAllText("你的文件路径.txt", new UTF8Encoding(false));
    
  • 完整处理流程示例
    结合上述步骤,配合ZipArchive处理的完整代码:

    string rawString = File.ReadAllText("zip-base64.txt", new UTF8Encoding(false));
    
    // 清理非法字符
    var cleanBase64 = new string(rawString.Where(c => 
        (c >= 'A' && c <= 'Z') || 
        (c >= 'a' && c <= 'z') || 
        (c >= '0' && c <= '9') || 
        c == '+' || c == '/' || c == '=').ToArray());
    
    // 修正长度
    int mod = cleanBase64.Length % 4;
    if (mod != 0)
    {
        cleanBase64 += new string('=', 4 - mod);
    }
    
    // 解码并处理ZipArchive
    byte[] zipBytes = Convert.FromBase64String(cleanBase64);
    using (var ms = new MemoryStream(zipBytes))
    using (var archive = new ZipArchive(ms, ZipArchiveMode.Read))
    {
        foreach (var entry in archive.Entries)
        {
            using (var reader = new StreamReader(entry.Open()))
            {
                string content = reader.ReadToEnd();
                // 这里添加你的业务处理逻辑
            }
        }
    }
    
  • 额外排查点

    • 验证原始Base64内容正确性:将清理后的Base64字符串解码为字节数组,保存为.zip文件,手动打开确认Zip文件未损坏。
    • 确认记事本保存编码:避免使用ANSI编码,保存时选择“UTF-8”选项。

内容的提问来源于stack exchange,提问作者user3738874

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:13:28