Есть документ в интернете в UTF-8
Пытаюсь получить его в UTF-8 с помощю curl
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) {
((std::wstring*)userp)->append((wchar_t*)contents, size * nmemb);
return size * nmemb;
}
...
CURL *curl;
CURLcode res;
std::wstring readBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "url");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
int pos = readBuffer.find_first_of(L"World");
breakpoint на readBuffer
и pos
Почему я не получаю в UTF-8 то что нужно?
Вариант для windows. Так как часто приходилось сталкиваться с кодировками, предлагаю попробовать "решение в лоб", т.е. я вижу, что в формате юникод wchar_t хранятся данные в формате UTF-8. Можно преобразовать их в char и обратно в юникод. Не самое лучшее решение (некоторые символы, т.е. всё что верх но не кирилица - будут потеряны).
if(curl) { /*...*/ } // чисто показать после какого куска вписать код
int utf8_len = readBuffer.length();
char * tmp = (char*)malloc(utf8_len+1);// просим место
utf8_len = WideCharToMultiByte(CP_UTF8, 0,readBuffer.c_str(), utf8_len , tmp , utf8_len , 0, 0);
tmp[utf8_len]=0;
wchar_t * wtmp = (wchar_t*)malloc(utf8_len*2+2);
wsprintfW(wtmp,L"%hs",tmp); // Всё, получили стандартный юникод
readBuffer.assign(wtmp); // присвоить результат
// ну и всё освободить
free((void*)tmp);
free((void*)wtmp);
Другие варианты решения:
Попробуйте такое решение
int utf8_len = readBuffer.length();
char * tmp = (char*)malloc(utf8_len+1);// просим место
for (int i=0;i<utf8_len;i++) tmp[i]=(char)readBuffer[i];
wchar_t * wtmp = (wchar_t*)malloc(utf8_len*2+2);
utf8_len = MultiByteToWideChar (
CP_UTF8, 0,tmp,utf8_len, wtmp , utf8_len );
wtmp[utf8_len]=0;
readBuffer.assign(wtmp); // присвоить результат
free((void*)tmp);
free((void*)wtmp);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Переопределил стандартный view у QComboBox по этому примеру:
Суть проблеми в том что у меня есть две модели, при одной модели Edit работаеш хорошо но когда добавил вторую модель с таким же функционалом...
На основном экране есть "шапка" с навигацией, которая будет одинаковой (headxml)
У меня есть несколько AutoCompleteTextViewИ класс в котором они находятся реализует интерфейс AdapterView