Если старая система действительно может правильно обрабатывать UTF-7, почему вы хотите что-то удалить? Просто закодируйте строку как UTF-7:
string text = LoadFromWherever(Encoding.UTF8);
byte[] utf7 = Encoding.UTF7.GetBytes(text);
Затем отправьте текст в кодировке UTF-7 в более старую систему.
Если у вас есть оригинальные байты в кодировке UTF-8, вы можете сделать это за один шаг:
byte[] utf7 = Encoding.Convert(Encoding.UTF8, Encoding.UTF7, utf8);
Если вам на самом деле необходимо преобразовать в ASCII, вы можете сделать это достаточно легко.
Чтобы удалить не-ASCII символы:
var encoding = Encoding.GetEncoding
("us-ascii", new EncoderReplacementFallback(""),
new DecoderReplacementFallback(""));
byte[] ascii = encoding.GetBytes(text);
Чтобы преобразовать не-ASCII в ближайший эквивалент:
string normalized = text.Normalize(NormalizationForm.FormKD);
var encoding = Encoding.GetEncoding
("us-ascii", new EncoderReplacementFallback(""),
new DecoderReplacementFallback(""));
byte[] ascii = encoding.GetBytes(normalized);