gpt4 book ai didi

c# - 通过套接字从 C++ wchar_t 到 C# char

转载 作者:搜寻专家 更新时间:2023-10-31 00:49:40 27 4
gpt4 key购买 nike

我目前正在构建一个通过套接字与 C# 应用程序通信的 C++ 应用程序。我的 C++ 应用通过套接字发送 wchar_t*。

这里是发送内容的概述:

<!-- Normal xml file-- 

这是我在另一端收到的内容(我对字节数组执行 stream.read 并使用UTF8Encoding.GetString() 将字节数组转换为可读字符串)

<\0!\0-\0-\0 \0N\0o\0r\0m\0a\0l\0 \0x\0m\0l\0 \0f\0i\0l\0e\0-\0-

这是编码问题吗?你怎么说?为什么是0扩展,为什么unicode字符没有出现在C#端?

最佳答案

看起来它发送的是 UTF-16,而不是 UTF-8,这是有道理的 - wchar_t 基本上是一种 16 位类型(在 Windows 中),而您正在“原始”发送它据我所知。我建议,如果您要将数据转换为 XDocumentXmlDocument,您可以使用二进制数据来完成 - 该框架知道如何自动检测 UTF-16 XML 文件 (IIRC)。

如果 XML 声明将它声明为 UTF-8,而实际上它是 UTF-16,那么您可能会遇到问题。

或者,在 C++ 端使用合适的编码类来真正发送 UTF-8。这将需要额外的处理时间,但如果考虑到这一点,通常可以节省带宽。

关于c# - 通过套接字从 C++ wchar_t 到 C# char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/945309/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com