无法读取阿拉伯语字符串/客户端服务器应用程序c#

时间:2017-03-22 15:57:23

标签: c#

我正在编写客户端/服务器应用程序以及一切正常的英语语言,但是当我用阿拉伯语发送消息时,它带有字符串字符。 我不知道我能做些什么来使阿拉伯语的信息像英语一样好用。

提前致谢!

 public Packet(byte[] dataStream)
 {
    // Read the data identifier from the beginning of the stream (4 bytes)

    this.dataIdentifier = (DataIdentifier)BitConverter.ToInt32(dataStream, 0);

    // Read the length of the name (4 bytes)
    int nameLength = BitConverter.ToInt32(dataStream, 4);

    // Read the length of the message (4 bytes)
    int msgLength = BitConverter.ToInt32(dataStream, 8);

    // Read the name field
    if (nameLength > 0)
        this.name = Encoding.UTF8.GetString(dataStream, 12, nameLength);
    else
        this.name = null;

    // Read the message field
    if (msgLength > 0)
        this.message = Encoding.UTF8.GetString(dataStream, 12 + nameLength, msgLength);
    else
        this.message = null;
}

// Converts the packet into a byte array for sending/receiving 
public byte[] GetDataStream()
{
    List<byte> dataStream = new List<byte>();

    // Add the dataIdentifier
    dataStream.AddRange(BitConverter.GetBytes((int)this.dataIdentifier));

    // Add the name length
    if (this.name != null)
        dataStream.AddRange(BitConverter.GetBytes(this.name.Length));
    else
        dataStream.AddRange(BitConverter.GetBytes(0));

    // Add the message length
    if (this.message != null)
        dataStream.AddRange(BitConverter.GetBytes(this.message.Length));
    else
        dataStream.AddRange(BitConverter.GetBytes(0));

    // Add the name
    if (this.name != null)
        dataStream.AddRange(Encoding.UTF8.GetBytes(this.name));

    // Add the message
    if (this.message != null)
        dataStream.AddRange(Encoding.UTF8.GetBytes(this.message));

    return dataStream.ToArray();
}

// Initialise a packet object to store the data to be sent
Packet sendData = new Packet();
sendData.ChatName = this.name;

sendData.ChatMessage =  txtMessage.Text.Trim();

sendData.ChatDataIdentifier = DataIdentifier.Message;

// Get packet as byte array
byte[] byteData = sendData.GetDataStream();

// Send packet to the server
clientSocket.BeginSendTo(byteData, 0, byteData.Length, SocketFlags.None, epServer, new AsyncCallback(this.SendData), null);

txtMessage.Text = string.Empty;

0 个答案:

没有答案