gpt4 book ai didi

C++:将 vector 转换为 UTF-8 字符串,以便我可以通过 Websocket 发送

转载 作者:行者123 更新时间:2023-11-30 01:35:38 24 4
gpt4 key购买 nike

如标题所示,我有一个原始字符 vector ,我需要将其编码为正确的 UTF-8 字符串,以便我可以通过 Websocket 发送结果。我的倾向只是这样做

    std::vector<char> data;

// Fill data ..., then

std::string utfData(data.begin(), data.end());

// Finally, send utfData

但是,在浏览器端,它告诉我我的数据不是正确编码的 UTF-8 字符串。我的逻辑有什么问题,我应该如何转换这个 vector<char>到 UTF8 字符串?

如果上面的逻辑似乎是正确的,那么我将不得不调查其他代码,但我怀疑问题出在那里,因为我之前使用 c++ 服务器和 javascript 客户端发送正常的 std::string 对象没有问题.然而,在接收方,它现在甚至不会收到消息,因为它说它不是正确的 UTF-8 字符串。也就是说,在 WebSocket 协议(protocol)级别,它拒绝我的服务器正在发布的消息。

最佳答案

将字符从 vector 复制到字符串的逻辑是正确的。

鉴于结果需要是UTF-8,如果源是UTF-8,那么程序是正确的。

如果源不是 UTF-8,那么您需要以某种方式转换编码。为了通过转换保持文本清晰,您需要知道源数据的编码,才能知道如何执行转换。

如果数据不是文本的,即它是二进制的,那么您可以使用例如 Base64 编码使其成为有效的 UTF-8。您当然也可以将 Base64 用于文本,但文本在解码之前将无法保持可读性,然后以其使用的特定编码呈现。

关于C++:将 vector<char> 转换为 UTF-8 字符串,以便我可以通过 Websocket 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53777858/

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