0

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」として扱われるようにするために「ヘッダーを変更」しようとしたものです(そう思いました)。

初心者で申し訳ありませんが、ヘルプやコメントは非常に高く評価されます。

ありがとう。

4

1 に答える 1

1

結局のところ、私の質問は単に意味をなさないと思います。実際、私はいくつかの Web サイトのコンテンツを読み込もうとしており、このコンテンツを txt ファイルに入れる必要がありました。ファイルに書き込む前に、ターミナルに書き込んでいたところ、奇妙な文字が表示されていました... netlib google グループの誰かが、ファイルに書き込むだけで問題ないと言っていました。そして、ありませんでした。ASCII 以外のすべての文字がファイルに正常に書き込まれました。

結局、問題はエンコードされた utf を読み取ることではなく (読み取られていた)、端末でそのように表示することでした。本当の問題ではありませんが、私が本当に必要としていたのはファイルの utf エンコードでした。そして、それは箱から出してすぐにそのように機能します。

少なくとも私のように行き詰まった人の助けになることを願っています。

于 2015-09-20T00:25:32.330 に答える