Я пытаюсь использовать curl_easy_escape для кодирования строки, получаю строку со специальными символами, поэтому не знаю, как получить строку специальных символов в c символах. Кодирование не выполняется должным образом в windows, сравните с Linux (Linux его правильный вывод.)
#include <iostream>
#include "stdafx.h"
#include "curl/curl.h"
#include <locale.h>
#include <string>
using namespace std;
int main(int * argc , char **argv)
{
setlocale(LC_CTYPE, "");
char licid[] = "test¹d98";
char licid1[] = "test¹d98";
char nlictest[1000];
wchar_t lictest[1000];
memset(nlictest, '\0', 1000);
memset(lictest, '\0', 1000);
strcpy_s(nlictest, argv[1]);
//wcscpy_s(lictest, (wchar_t*)nlictest);
printf("strlen:%d", strlen(nlictest));
//printf("strlen1:%d", wcslen(lictest));
CURL *curl = curl_easy_init();
if (curl) {
//char *output = curl_easy_escape(curl, "test¹d98", strlen(licid));
char *output = curl_easy_escape(curl, nlictest, strlen(nlictest));
if (output) {
printf("Encoded: %s\n", output);
curl_free(output);
}
}
return 0;
}
Ввод в командной строке: test¹d98
Windows Вывод : strlen: 8 Закодировано: test% B9d98
In Linux: strlen: 8 Закодировано: test% C2% B9d98
В коде все, что необходимо сделать для правильной обработки этого случая.