Как реализовать на с++ url encoding decoding с utf8?

Вот например я набираю искать в гугле "Вася" в строке сверху Вася преобразовывается в "%D0%92%D0%B0%D1%81%D1%8F" как на c++ реализовать такую функцию.

Для случая с обычным форматом не utf я ее легко реализовал, т.е. если ищу английские символы, то все ок.
Не хотелось бы подтягивать какие либо тяжелые либы.
Решение на WinApi в данный момент меня бы устроило полностью.
  • Вопрос задан
  • 2538 просмотров
Пригласить эксперта
Ответы на вопрос 1
#include <string>
int main() {
    std::string str("Вася");
    for(unsigned char c : str)
        printf("%%%X", c);
    printf("\n");
    return 0;
}

Вывод:
%D0%92%D0%B0%D1%81%D1%8F

Можно сделать так:
#include <sstream>
#include <iostream>
#include <string>
#include <iomanip>

int main() {
    std::string str("Вася");
    std::stringstream stream;
    stream << std::hex;
    for(unsigned char c : str)
        stream << '%' << std::setw(2) << static_cast<int>(c);
    std::cout << stream.str() << std::endl;
    return 0;
}

Вывод аналогичный.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы