Я получаю ошибку недопустимого символа 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» в конце, но я не думаю, что он вообще что-то делает, даже обрезанный, он все равно выбрасывает). Я даже копирую и вставляю всю строку в тестовый метод и сжимаю / распаковываю это. Работает нормально.
Тесты пройдут, но код не сможет использовать ту же самую строку? Единственное отличие - вместо того, чтобы просто объявить обычную строку и передать ее, я получаю возвращенную из набора записей.
Есть идеи, что я делаю не так?