すべきではないのに、Base64 の無効な文字エラーが発生し続けます。
プログラムは XML ファイルを取得し、それをドキュメントにエクスポートします。ユーザーが望む場合は、ファイルも圧縮します。圧縮は正常に機能し、UTF-8 にエンコードされてファイルに書き込まれる Base64 文字列を返します。
ドキュメントをプログラムにリロードするときは、圧縮されているかどうかを確認する必要があります。コードは次のとおりです。
byte[] gzBuffer = System.Convert.FromBase64String(text);
return "1F-8B-08" == BitConverter.ToString(new List<Byte>(gzBuffer).GetRange(4, 3).ToArray());
文字列の先頭をチェックして、GZip コードが含まれているかどうかを確認します。
問題は、すべてのテストが機能することです。文字列を取得し、圧縮、解凍して、元の文字列と比較します。問題は、ADO レコードセットから返された文字列を取得するときです。文字列はまさにファイルに書き込まれたものです(最後に「\ 0」が追加されていますが、何もしないとは思いませんが、トリミングしてもまだスローされます)。文字列全体をコピーしてテストメソッドに貼り付け、それを圧縮/解凍しました。正常に動作します。
テストはパスしますが、コードはまったく同じ文字列を使用して失敗しますか? 唯一の違いは、通常の文字列を宣言して渡すのではなく、レコードセットから返される文字列を取得していることです。
私が間違っていることについてのアイデアはありますか?