Я предполагаю, что вы пытаетесь поместить двоичные данные в строковое поле.
Простое преобразование данных из двоичного файла в Unicode является несколько плохой идеей (одна из причин, по которой вы столкнулись, но Null (0) - не единственная точка в строковом кодировании Unicode, которая может вызвать проблемы для вас . Существуют и другие управляющие символы, у вас могут быть пары байтов, которые указывают на символы, зарезервированные в Unicode и т. Д.)
Я бы рекомендовал вместо этого использовать Base64. Он был разработан именно для этой цели. Хотя это, вероятно, затрудняет ваши усилия по сжатию с помощью gzip, это должно решить вашу проблему.
Вместо этого ваш код будет выглядеть примерно так:
byte[] bytes = ... // This is my blob
System.Convert.ToBase64String(bytes);
Затем вы используете:
System.Convert.ToBase64String(string);
Чтобы вернуть ваши данные в байтах.
Это определенно более безопасный подход, чем то, что вы делаете.