我一直得到一个base64无效字符错误,即使我不应该。
程序获取一个XML文件并将其导出到一个文档。如果用户需要,它也会压缩文件。压缩工作正常,返回base64字符串,该字符串编码为utf-8并写入文件。
当需要将文档重新加载到程序中时,我必须检查它是否被压缩,代码只是:
byte[] gzBuffer = System.Convert.FromBase64String(text);
return "1F-8B-08" == BitConverter.ToString(new List(gzBuffer).GetRange(4, 3).ToArray());
它检查字符串的开头,看是否包含gzip代码。
现在问题是,我所有的测试都有效。我拿了一根绳子,压缩它,解压它,然后和原来的比较。问题是,当我从ADO记录集获取返回的字符串时。字符串正是写入文件的内容(末尾添加了一个“\0”,但我认为即使这样做也不起作用,即使删掉它也会抛出)。我甚至复制并粘贴整个字符串到一个测试方法中,然后压缩/解压缩它。工作良好。
测试将通过,但代码将使用完全相同的字符串失败?唯一的区别是,它不只是声明一个常规字符串并将其传入,而是从记录集中返回一个。
对我做错了什么有什么看法吗?