2009-09-03 45 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而不是字符串?

編輯:我試圖設法得到正確的wchar_t *緩衝區中的數據,而不是(字符緩衝區的第一個參數是void *根據捲曲),我不想知道如何添加Ansi將數據轉換爲Unicode緩衝區。

謝謝!

回答

2

基本上,它與curl無關,您正面臨將utf-8轉換爲寬字符串的問題。你可以使用類似Glib::ustring類的東西或者自己實現它,或者看看this code

+0

這不是轉換這是我的問題,它首先接收數據;第一個參數是一個void *,可以投入任何東西;但是這隻適用於char *。 – Charles

+0

不,它*是*轉換。您會收到字節流,這些字節流可能使用「UTF-8」進行編碼(實際上取決於服務器,您可以在HTTP頭中找到這些信息)。你不能只是施放指針來改變數據,你需要轉換它。 –

+0

工作順利,謝謝! – Charles