[英]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.