Ошибка строки C++ UTF-8, начиная с 10xxxxxx с помощью cpprestsdk

Я работал с cpprestsdk довольно долго, и до сегодняшнего дня у меня вообще не было этой проблемы. Я не уверен, что изменилось, но после некоторой отладки я не понимаю, почему это происходит.
При преобразовании строки utf-8 в wchar_t, которая будет использоваться с остальными вызовами, я получаю сообщение об ошибке "Символ строки UTF-8 никогда не может начинаться с 10xxxxxx". Файл cpp, который выдает эту ошибку, показан здесь в строке 280: https://github.com/Microsoft/cpprestsdk/blob/master/Release/src/utilities/asyncrt_utils.cpp

Я скопировал код в свою программу, чтобы попытаться выяснить, почему это происходит, и вот что у меня есть: Примечание: *tmp - итератор для строкового вектора

`std::string str = *tmp->safe; //*tmp->safe == "WW-Department-Zone-OS" 
const size_t sSize = str.size();
const char* const sData = str.data();
size_t result{ sSize };
for (size_t index = 0; index < sSize;) {
    const char c{ sData[index++] };
    if ((c & 0x40) == 0)
        std::cout << "String starts with 10xxxxxx\n";
}`

При использовании точек останова я заметил, что ошибка выдается, когда символ 'c' == '-' и символ после него -40 'Ø'. Если у кого-то есть информация о том, почему это происходит, это будет с благодарностью.

1 ответ

Возможно, слишком поздно, но решение этой проблемы довольно странное, но я опубликую ансер, так как его гораздо проще найти на этом форуме, чем на других форумах. У меня была такая же проблема с VS 2019 и такая же проблема с создателем Qt, но я наконец нашел ответ.

Как упоминалось здесь: https://github.com/microsoft/cpprestsdk/issues/1142 в последнем сообщении, вы должны использовать cpprest_2_10d.lib для режима отладки и cpprest_2_10.lib для выпуска. Если вы использовали vcpkg для установки cpprestsdk, то отладочная версия библиотеки находится в каталоге «debug / lib», а библиотека для повторного выпуска находится только в каталоге «lib».

Спасибо участникам github.com за публикацию ответа, это действительно сэкономило мне время.

Другие вопросы по тегам