2009-09-03 8 views
1

私はアプリケーションを作成していますが、現在libcurlを使用しています。 Ansiの文字セットのためにlibcurlコールバック関数を実装するとうまく動作しますが、Unicode文字を扱うときには動作しません。LibCurl Unicodeデータ

int CURLConnectorAnsi::BufferWriter(char* data, size_t size, size_t nmemb, std::string* buffer) 
{ 
    int ReadBytes = 0; 
    if (buffer != NULL) 
    { 
     buffer->append(data, size * nmemb); 
     ReadBytes = size * nmemb; 
    } 

    return ReadBytes; 
} 

このスニペットはうまく機能し、私が読んだウェブサイトの内容を返します。誰も私はどのように文字列の代わりにwstringにデータを正しく渡すことができるか知っていますか?

EDIT:文字バッファーの正しいwchar_t *バッファー(最初のパラメーターはcurlによるvoid *です)でデータを取得しようとしていますが、追加方法を知りたくありませんAnsiデータをUnicodeバッファに格納します。

ありがとうございます!

答えて

2

基本的にはcurlとは関係がありません。utf-8をワイド文字列に変換する問題に直面しています。あなたはGlib::ustringクラスのようなものを使用するか、それを自分で実装するか、this codeを見てください。

+0

私の問題は、それが最初の場所でデータを受け取っていることを変換するものではありません。最初のパラメータはvoid *であり、何にでもキャストすることができます。しかし、これはchar *に対してのみ有効です。 – Charles

+0

いいえ、*変換中です。あなたは 'UTF-8'を使ってエンコードされたバイトストリームを受け取ります(実際にはサーバに依存し、この情報は' HTTP'ヘッダで見つけることができます)。あなたはデータを変更するためにポインタをキャストすることはできません、あなたはそれを変換する必要があります。 –

+0

スムーズに作業しました、ありがとう! – Charles

関連する問題