Base64の無効な文字エラーが発生しても、私は続けていません。Base64文字列が無効な文字エラーを投げる
プログラムはXMLファイルを取り込み、それをドキュメントにエクスポートします。ユーザーが望む場合は、ファイルも圧縮されます。圧縮は正常に動作し、UTF-8にエンコードされてファイルに書き込まれるBase64 Stringを返します。
私はその圧縮されたかどうかを確認する必要がプログラムに文書を再ロードするためにその時間は、コードは単純です:
byte[] gzBuffer = System.Convert.FromBase64String(text);
return "1F-8B-08" == BitConverter.ToString(new List<Byte>(gzBuffer).GetRange(4, 3).ToArray());
それはそれはGZipsコードを持っているかどうかを確認するために、文字列の先頭をチェックしますその中に。
今、すべてのテストが機能します。私は文字列を取り、それを圧縮し、解凍し、それをオリジナルと比較します。問題は、ADOレコードセットから返された文字列を取得する場合です。文字列はファイルに書き込まれたものです(最後に "\ 0"が追加されていますが、何もしないと思っています。私はさらに文字列全体をコピーしてテストメソッドに貼り付け、それを圧縮/解凍します。正常に動作します。
テストは合格しますが、コードは全く同じ文字列を使用して失敗しますか?唯一の違いは、通常の文字列を宣言して渡す代わりに、レコードセットから返される文字列を取得することです。
私は何が間違っているのかに関するアイデアはありますか?
Convert.FromBase64Stringに渡す文字列の例を投稿すると助けになるでしょう(例えば、呼び出しの直前にDebug.Writeを置くと出力に出るもの) –
... even最初と最後の8バイト、および文字列の長さを投稿した場合、その文字列が正しい形式であることがわかります。 –
qGcAAB + LCA ... cAAA == その長さは2376文字です。 – Brandon