Простенький асинхронный чат. Что-то не то с кодировкой - C#

Узнай цену своей работы

Формулировка задачи:

Нашел пример простого чата. В комплект поставки входит серверная чать и клиентская (исходник в аттаче). Запустил, вроде все работает. При дальнейшем тестировании оказалось что если ввести логин кирилицей или просто отправлять сообщения кирилицей начинаются чудеса: тект обрезается и появляются какие-то артефакты. Немного поэкспериментировав пришел к мысли что текст рубится каждый раз когда преобразуется из байтов в строки. Причем рубится на стороне сервера а затем и на стороне клиента когда приходит ответ от сервера. Думаю за все эти беды отвечает следующий кусок кода:
public Data(byte[] data)
        {
            //The first four bytes are for the Command
            this.cmdCommand = (Command)BitConverter.ToInt32(data, 0);
 
            //The next four store the length of the name
            int nameLen = BitConverter.ToInt32(data, 4);
 
            //The next four store the length of the message
            int msgLen = BitConverter.ToInt32(data, 8);
 
            //This check makes sure that strName has been passed in the array of bytes
            if (nameLen > 0)
                this.strName = Encoding.UTF8.GetString(data, 12, nameLen);
            else
                this.strName = null;
 
            //This checks for a null message field
            if (msgLen > 0)
                this.strMessage = Encoding.UTF8.GetString(data, 12 + nameLen, msgLen);
            else
                this.strMessage = null;
        }
Но что конкретно здесь не так, разобраться не могу. Помогите пожалуйста пофиксить баг...

Решение задачи: «Простенький асинхронный чат. Что-то не то с кодировкой»

textual
Листинг программы
strMessage ?? ""

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы