如何读取UTF-8编码与cpp-netlib时,没有指定在html头

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

本文关键字:html cpp-netlib 何读取 读取 编码 UTF-8      更新时间:2023-10-16

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

关键是:从一些站点,我得到了正确的UTF-8编码(像ç、、î等字符正确显示)。在其他网站上,这些字符以"?"的形式出现在黑菱形内。我注意到前者在标题中有一个关于UTF-8编码的显式html标记,而另一个则没有。

我在我的代码中尝试了一些关于"header request"的事情,在通过文档和google之后,但是由于我不知道我在做什么,我没有成功。

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

包括名称空间…

  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"的部分(所以我认为)。

很抱歉,但任何帮助或评论将非常感谢。

谢谢。

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

最后,问题不在于读取编码的utf(它正在被读取),而在于在终端中看到它。虽然这不是一个真正的问题,因为我真正需要的是在文件中进行utf编码。而且它的工作方式也很简单。

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