Код: Выделить всё
byte[] byteArray = new byte[] { 125, 126, 127, 128, 129, 130, 250, 254, 255 };
string s = Encoding.Default.GetString(byteArray);
Console.OutputEncoding = Encoding.Default;
Console.WriteLine("Default: " + s);
s = Encoding.ASCII.GetString(byteArray);
Console.OutputEncoding = Encoding.ASCII;
Console.WriteLine("ASCII: " + s);
s = Encoding.UTF8.GetString(byteArray);
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("UTF8: " + s);
Код: Выделить всё
Default: }~€‚úûüýþÿ
ASCII: }~?????????
UTF8: }~���������

Чего я ожидаю это увидеть расширенные символы ASCII. Кодировка по умолчанию почти правильная, но она не может отображать 251, 252 и 253, но это может быть недостатком Console.writeLine(), хотя я этого не ожидал.

представление переменной при отладке такое: следует:
Код: Выделить всё
Default encoded string = "}~€‚úûüýþÿ"
ASCII encoded string = "}~?????????"
UTF8 encoded string = "}~���������"
Немного контекста:
Я пытаюсь определить, какая кодировка будет лучшим стандартом в нашей компании. Лично я думаю, что UTF8 подойдет, но мой руководитель хотел бы увидеть несколько примеров, прежде чем мы примем решение.
Очевидно, мы знаем, что время от времени нам придется использовать другие типы кодирования (например, при последовательной связи используется 7 бит, поэтому мы не можем использовать там UTF8), но в целом мы хотели бы придерживаться одного типа кодировки. В настоящее время мы используем случайные значения по умолчанию, ASCII и UTF8, так что это нехорошо.
РЕДАКТИРОВАТЬ
вывод в соответствии с:
Код: Выделить всё
Console.WriteLine("Default: {0} for {1}", s, Console.OutputEncoding.CodePage);

Редактировать 2:
Поскольку я думал, что не существует кодировки, в которой расширенные символы ascii соответствуют десятичным числам в таблице Я дал ссылку, я перевернул его, и это:
Код: Выделить всё
char specialChar = '√';
int charNumber = (int)specialChar;
Подробнее здесь: https://stackoverflow.com/questions/334 ... -expecting
Мобильная версия