gpt4 book ai didi

c++ - 使用 C++ 发布到服务器时,欧洲字符切换为奇怪的字符作为响应

转载 作者:行者123 更新时间:2023-11-30 05:02:54 24 4
gpt4 key购买 nike

我正在努力在 Windows 下以正确的格式从服务器获取响应。我已经尝试了两个 C++ 库 Beast(基于 Boost Asio)和 Cpr(基于 libcurl),我遇到了完全相同的问题。

奇怪的是,我也在 C# (HttpClient) 中尝试过,一切正常。此外,在 Postman 和其他 REST 工具中它看起来不错。

当我发布到服务器并且应该取回名称 René 时,我得到的是 Ren�。其他欧洲字符,如 æ、ø、å、ö 给出了同样奇怪的输出。对我来说,这看起来像是 utf-8/iso-8859-1 的问题,但我无法弄清楚。服务器(基于 node.js)和响应设置为推出 utf-8。我们试图只重定向响应,这样它就不会访问数据库或类似的东西。所以,问题似乎在 C++ 下。对于我可以尝试的任何建议,我们将不胜感激。

示例代码:

nlohmann::json test_json = nlohmann::json
{
{ "text", "Hi, my name is René" },
{ "language", "en" }
};

auto r = cpr::Post(cpr::Url{ "http://www.exampleserver.com" },
cpr::Body{ test_json.dump() },
cpr::Header{ { "content-type", "application/json; charset=utf-8" } });

std::cout << r.text << std::endl;

最佳答案

看起来您发送了一些 ISO-8859-1 内容,但它被标记为 UTF-8。这会导致一连串的转换错误,这些错误可能会破坏非 ASCII 字符以致无法识别。

解决此问题的方法是识别非 UTF-8 数据并正确转换它,或者使用正确的 MIME 类型和编码识别有效负载。

关于c++ - 使用 C++ 发布到服务器时,欧洲字符切换为奇怪的字符作为响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49633815/

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