Apparently System.Text.Encoding supports only three encodings:
System.Text.Encoding.BigEndianUnicode System.Text.Encoding.Unicode System.Text.Encoding.UTF8
Accordingly, he can not find windows-1251. For such a coding, he does not know.
To use windows-1251 encoding, you need to implement your class that inherits from System.Text.Encoding and describes this encoding.
Like that:
public class Windows1251 : Encoding { static string alpha = "\0\a\b\t\n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ''“”•–—™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"; public override int GetByteCount(char[] chars, int index, int count) { return count; } public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex) { byte questionIndex = (byte)alpha.IndexOf('?'); for (int i = 0; i < charCount; i++) { int toIndex = byteIndex + i; int index = alpha.IndexOf(chars[charIndex + i]); if (index == -1) bytes[toIndex] = questionIndex; else bytes[toIndex] = (byte)index; } return charCount; } public override int GetCharCount(byte[] bytes, int index, int count) { return count; } public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { for (int i = 0; i < byteCount; i++) { chars[i + charIndex] = alpha[bytes[byteIndex + i]]; } return byteCount; } public override int GetMaxByteCount(int charCount) { return charCount; } public override int GetMaxCharCount(int byteCount) { return byteCount; } }