html head 中未指定时如何使用 cpp-netlib 读取 UTF-8 编码

How to read UTF-8 enconding with cpp-netlib when not specified in html head

我正在尝试使用 cpp-netlib(加上 boost,在 linux 上)获取某些网站的内容。 netlib和boost都是最新版本(本周安装,没有编译问题)

要点是:我从某些站点获得了正确的 UTF-8 编码(ç、á、î 等字符正确显示)。在其他网站上,这些字符以“?”的形式出现。里面的黑色钻石。我注意到前者在 header 中有一个明确的 html 标记关于 UTF-8 编码,而另一个则没有。

在浏览了一些文档和 google 之后,我在我的代码中尝试了一些使用 "header request" 的东西,但我不知道我在做什么,我没有成功。

我使用的是标准示例中给出的非常简单的代码。如下:

包括,命名空间...

  network::http::client client;
  network::http::client::request request(url);  
  //boost::network::add_header(request, "Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
  request << network::header("Connection", "close");
  //request << boost::network::header("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
  //request << boost::network::header("Accept", "application/x-www-form-urlencoded; charset=utf-8");
  network::http::client::response response = client.get(request);
  content = body(response);
  cout << content;

注释掉的部分是我尝试 "change the header" 以使内容被请求视为 "UTF-8" 的部分(我是这么认为的)。

对于新手,我们深表歉意,但我们将不胜感激任何帮助或评论。

谢谢。

好吧,最后,我想我的问题根本没有意义。事实上,我正在尝试阅读一些网站内容,我需要将这些内容放入一个 txt 文件中。在写入文件之前,我正在写入终端,在那里我看到了奇怪的字符......来自 netlib google 组的人告诉我我应该只写入一个文件并且不会有问题。并没有。所有非 ascii 字符都正常写入文件。

最后,问题不在于读取 utf enconded(它被读取),而是关于在终端中看到它。虽然不是真正的问题,因为我真正需要的是文件中的 utf-enconding。它开箱即用。

我希望它至少能帮助像我一样被卡住的人。