0

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

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

在浏览了一些文档和谷歌之后,我在我的代码中尝试了一些“标题请求”,但尽管我不知道我在做什么,但我没有成功。

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

包括,命名空间...

  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;

注释掉的部分是我试图“更改标题”以使内容被请求视为“UTF-8”的部分(所以我想)。

对不起新手,但任何帮助或评论将不胜感激。

谢谢。

4

1 回答 1

1

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

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

我希望它至少可以帮助像我一样陷入困境的人。

于 2015-09-20T00:25:32.330 回答