Когда вы отправляете строку через сокет, как вы преобразуете ее в байты и как получатель преобразует эти байты обратно в строку?Проблема, с которой вы сталкиваетесь, заключается в том, что используемая у отправителя кодировка символов не совпадает с кодировкой получателя.Когда вы преобразуете строку в байты, вам следует использовать один из встроенных классов кодирования, например UTF8Encoding
var str = ...; //whatever needs to be sent via socket
var utf8 = Encoding.UTF8;
var bytes = utf8.GetBytes(str);
socket.Send(bytes)
. Возможно, вы захотите прочитать входные данные в виде кусков в буфер иотправьте его через сокет оттуда, но это общая идея.Приемник на другом конце должен использовать ту же кодировку для преобразования byte
s, полученных обратно в string
.
См. Эту страницу в MSDN для получения дополнительной информации о кодировках.