我不断收到 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());
它检查字符串的开头以查看其中是否包含 GZips 代码。
现在的问题是,我所有的测试都有效。我取一个字符串,对其进行压缩、解压缩,然后将其与原始字符串进行比较。问题是当我得到从 ADO 记录集返回的字符串时。该字符串正是写入文件的内容(最后添加了“\ 0”,但我认为它甚至不会做任何事情,即使修剪掉它仍然会抛出)。我什至将整个字符串复制并粘贴到测试方法中并压缩/解压缩。工作正常。
测试将通过,但代码将使用完全相同的字符串失败?唯一的区别是不是仅仅声明一个常规字符串并将其传递给我,而是从记录集中返回一个。
关于我做错了什么的任何想法?