繁体   English   中英

未在html头中指定时如何读取与cpp-netlib对应的UTF-8

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

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

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

在对文档和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”的部分。

对新手感到抱歉,但是任何帮助或评论都将不胜感激。

谢谢。

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

最后,问题不在于阅读utf编码(正在阅读),而是关于如何在终端中看到它。 尽管这不是真正的问题,但是由于我真正需要的是将utf编码在文件中。 这样就可以直接使用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM