从客户端到服务器获取希伯来字母

时间:2013-12-01 10:13:46

标签: c# c++ unicode client ascii

我最近开发了一个客户端服务器程序,其中客户端在C ++上运行,服务器在C#上运行。我想发送到服务器的希伯来字母和英文字母混合,但当我收到服务器上的字母并将它们转换为Unicode时,我得到了胡言乱语。当我将它们转换为ASCII时,我得到所有的英文字母,但希伯来字母标有“?” ,但是当我调试客户端时,我看到我发送到服务器的变量中包含了所有的希伯来语和英文字母。

客户代码:

void sendData(SOCKET mySocket,const char* s)
{
    int nBytes;
    unsigned long messageSize = strlen(s);

    messageSize = htonl(messageSize);

    if ((nBytes = send(mySocket, (char*)&messageSize, sizeof(messageSize), 0)) == SOCKET_ERROR)
    {
        cout << "Client: Send Failed Sir!\n";
        int n=WSAGetLastError();
        cout << n << "\n";
    }

    messageSize = ntohl(messageSize);
    if ((nBytes = send(mySocket, s, messageSize, 0)) == SOCKET_ERROR)
    {
        cout << "Client: It wont go through sir!!\n";
    }
}

服务器代码:

bytesRead = clientStream.Read(message, 0, 600);

// maybe some bounds check too
int len = Array.IndexOf(message, (byte)0);
string asString = Encoding.Unicode.GetString(message, 0, len);

1 个答案:

答案 0 :(得分:0)

为了保持服务器代码的通用性,您可以从客户端发送Unicode。 通过MultiByteToWideChar函数转换为Unicode。希伯来语代码页是1255。

您也可以通过服务器中的C ++ / CLI调用此功能。