【问题标题】:C++ Convert UTF Byte Array to StringC++ 将 UTF 字节数组转换为字符串
【发布时间】:2012-02-01 01:36:49
【问题描述】:

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

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

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

并通过 c_str() 函数提取字符串,但结果字符串不是服务器发送的字符串!!

buff 是我从套接字接收的字节数组(无符号字符数组)。

任何帮助将不胜感激!!!

【问题讨论】:

  • Unicode 的编码是什么?有好几个。
  • C++ 客户端发送的 unicode 编码是否与 C# 服务器期望的相同?

标签: c# c++ sockets unicode


【解决方案1】:

以下是我尝试解决此问题的方法:

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

从一个已知实体(从服务器发送的数据)开始,并在每一步中检查它,看看它在哪里不再是您期望的样子。这会告诉你你的错误在哪里。一旦您知道了,如果您仍然遇到问题,请发布有关错误地点的详细信息。

【讨论】:

  • 我可以确认发送的字节是正确的。问题出在第四步。 wstring...
  • 换句话说我想做的是实现相应的 UTF8.GetString() c# .net 函数
  • 我很困惑。您在上面说两者都是 UTF-16。如果是这种情况,则不需要 UTF8.GetString()。您应该能够转换 UTF-16 数据数组并且做得很好。如果您实际上是以 UTF8 格式传输数据,那么您需要进行转换。可以看到这个问题:stackoverflow.com/questions/148403/…
猜你喜欢
  • 1970-01-01
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
相关资源
最近更新 更多