cpp-netlib (および Linux ではブースト) を使用して、いくつかの Web サイトのコンテンツを取得しようとしています。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」として扱われるようにするために「ヘッダーを変更」しようとしたものです(そう思いました)。
初心者で申し訳ありませんが、ヘルプやコメントは非常に高く評価されます。
ありがとう。