2012-01-02 153 views
0

我正在开发C#服务器和C++客户机。 C++客户端向服务器发送一些unicode字符串。还行吧。我有一个字符串对象,并使用data()函数来获取字节数组,并通过套接字将其发送到C#服务器。这没关系。服务器正确接收消息。问题在于接收。我收到来自c#服务器的字节,但我想要一种方法来将字节“转换”为相应的unicode字符串。C++将UTF字节数组转换为字符串

我试图创建一个宽字符串对象:

wstring str = wstring((wchar_t *) buff); 

并经由c_str()函数提取字符串但是结果字符串不是服务器发送字符串!!

其中,buff是一个从套接字接收的字节数组(unsigned char数组)。

任何帮助将不胜感激!

+2

什么编码的Unicode?有几个。 – Oded 2012-01-02 20:35:42

+0

C++客户端是否发送与C#服务器所期望的相同种类的unicode编码? – 2012-01-02 20:38:11

+0

是的都是UTF-16 – user969245 2012-01-02 20:43:17

回答

3

这是我怎么会去试图解决这个问题:

  1. 开始与服务器。检查要发送的数据。这是你期望的吗?
  2. 现在连接。运行Wireshark并检查通过以太网发送的实际数据。这是你期望的吗?
  3. 在客户端,检查缓冲区。这是你期望的吗?
  4. 在客户端,检查wstring。这是你期望的吗?

从一个已知的实体(从服务器发送数据)开始,并检查它的每一步,看看它停止在哪里,你期望它是什么。这会告诉你你的错误在哪里。一旦你知道这一点,如果你仍然有问题,发布错误的地点的详细信息。

+0

我可以确认发送的字节是正确的。问题在于第四步。 wstring ... – user969245 2012-01-02 21:34:25

+0

换句话说,我想要做的是实现相应的UTF8.GetString()c#.net函数 – user969245 2012-01-02 22:42:12

+0

我很困惑。你在上面说过,两者都是UTF-16。如果是这种情况,则不需要UTF8.GetString()。你应该能够投射UTF-16数据阵列并且很好。如果您实际上以UTF8格式传输数据,那么您需要进行转换。可以看到这个问题:http://stackoverflow.com/questions/148403/utf8-to-from-wide-char-conversion-in-stl – 2012-01-03 16:42:54

相关问题