即使我不应该,我仍然会收到Base64无效字符错误.
该程序获取XML文件并将其导出到文档.如果用户想要,它也会压缩文件.压缩工作正常并返回一个Base64字符串,该字符串被编码为UTF-8并写入文件.
当它将文档重新加载到程序中时,我必须检查它是否被压缩,代码只是:
byte[] gzBuffer = System.Convert.FromBase64String(text);
return "1F-8B-08" == BitConverter.ToString(new List<Byte>(gzBuffer).GetRange(4, 3).ToArray());
Run Code Online (Sandbox Code Playgroud)
它检查字符串的开头以查看其中是否包含GZips代码.
现在的问题是,我的所有测试都有效.我拿一根绳子,压缩它,解压缩,并将它与原始的相比较.问题是当我从ADO Recordset返回字符串时.字符串正是写入文件的内容(最后添加了一个"\ 0",但我认为它甚至没有做任何事情,即使修剪它仍然会抛出).我甚至将整个字符串复制并粘贴到测试方法中并压缩/解压缩.工作良好.
测试将通过,但代码将使用完全相同的字符串失败?唯一的区别是,只是声明一个常规字符串并传递它,我从记录集返回一个.
关于我做错什么的任何想法?