Простенький асинхронный чат. Что-то не то с кодировкой - 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 ?? ""
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д