Tôi tiếp tục nhận được một lỗi ký tự không hợp lệ Base64 mặc dù tôi không nên.Base64 Chuỗi ném lỗi ký tự không hợp lệ
Chương trình có tệp XML và xuất tệp đó vào tài liệu. Nếu người dùng muốn, nó cũng sẽ nén tệp. Nén hoạt động tốt và trả về một chuỗi Base64 được mã hóa thành UTF-8 và được ghi vào một tệp.
Khi thời gian của mình để tải lại tài liệu vào chương trình tôi phải kiểm tra xem nén của nó hay không, mã đơn giản là:
byte[] gzBuffer = System.Convert.FromBase64String(text);
return "1F-8B-08" == BitConverter.ToString(new List<Byte>(gzBuffer).GetRange(4, 3).ToArray());
Nó kiểm tra đầu của chuỗi để xem nếu nó có GZips đang trong đó.
Hiện tại, tất cả các thử nghiệm của tôi đều hoạt động. Tôi lấy một chuỗi, nén nó, giải nén nó và so sánh nó với bản gốc. Vấn đề là khi tôi nhận được chuỗi trả về từ một Recordset ADO. Chuỗi là chính xác những gì đã được ghi vào tập tin (với việc bổ sung một "\ 0" ở cuối, nhưng tôi không nghĩ rằng thậm chí làm bất cứ điều gì, thậm chí cắt nó vẫn ném). Tôi thậm chí sao chép và dán toàn bộ chuỗi vào một phương pháp thử nghiệm và nén/giải nén đó. Hoạt động tốt.
Các thử nghiệm sẽ vượt qua nhưng mã sẽ không sử dụng cùng một chuỗi chính xác? Sự khác biệt duy nhất là thay vì chỉ tuyên bố một chuỗi thông thường và chuyển nó vào trong một cái tôi được trả về từ một recordset.
Bất kỳ ý tưởng nào về những gì tôi đang làm sai?
Nó có lẽ sẽ giúp nếu bạn đăng một ví dụ về một chuỗi mà bạn đang đi đến Convert.FromBase64String (ví dụ như những gì bạn nhận được trên đầu ra nếu bạn đặt Debug.Write trực tiếp trước cuộc gọi) –
... thậm chí nếu bạn đăng 8 byte đầu tiên và cuối cùng, và độ dài chuỗi, có thể là đủ để thấy rằng chuỗi là định dạng đúng. –
qGcAAB + LCA ... cAAA == Dài 2376 ký tự. – Brandon