Вам не нужно преобразовать строку в Windows-1256
кодировкой. Это просто:
// on server side(before sending as byte array)
var bytes = Encoding.UTF8.GetBytes(clientName);
// on client side(after reciving byte array)
clientName = Encoding.UTF8.GetString(bytes);
Также в большинстве ситуации (за исключением при использовании очень низкого уровня IO, как сетевые сокеты, или потоки двоичных файлов) вам не нужно думать о кодировании преобразование вообще, потому что UTF-8 является кодировкой по умолчанию, используемой в высокопроизводительных операциях ввода/вывода .NET.
Чтобы выполнить свою странную задачу преобразования обычной строки Unicode على
осколков mojibake с символами, как Óèïåçäèðÿ
вы должны написать строку, используя арабскую для Windows Encoding (1256), а затем прочитать его обратно, используя западноевропейскую для Windows Encoding (1252) например:
var source = "على";
var westernLatin = Encoding.GetEncoding(1252);
var arabic = Encoding.GetEncoding(1256);
var bytes = arabic.GetBytes(source);
var result = westernLatin.GetString(bytes); // Uáì
Не нужно использовать UTF-8 здесь.
результат: clientName же перед кодировкой – Paradigm
@Paradigm, да, как и должно быть. Или вы ожидали чего-то еще? – rufanov
Я ожидал таких персонажей, как Óèïåçäèðÿ – Paradigm