Почему когда использую юникод отправляеться кривой POST запрос?

Я отправляю post запрос на свой локальный сервер

int main()
{
    TCHAR data[] = L"TEST=DATA1234567";
    LPCWSTR Header = L"Content-Type: application/x-www-form-urlencoded; charset=utf-8";
    LPCWSTR UserAgent = L"UG";

    HINTERNET hInt = InternetOpenW(UserAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

    HINTERNET hCon = InternetConnectW(hInt, L"192.168.0.101", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);

    HINTERNET hOpen = HttpOpenRequestW(hCon, L"POST", L"test", L"HTTP/1.1", NULL, NULL, NULL, NULL);

    HttpSendRequestW(hOpen, Header, lstrlenW(Header), data, lstrlenW(data));

    InternetCloseHandle(hInt);
    InternetCloseHandle(hCon);
    InternetCloseHandle(hOpen);
}

Записываю post запрос на своём локальном сервер с помощью php скрипта

<?php
$fh = fopen("POST-LOG.txt", "a+");
fwrite($fh, json_encode($_POST)."\n\n");
fclose($fh);
?>

В итоге вывод в файле POST-LOG.txt

{"T":"\u0000D\u0000A\u0000T\u0000"}

Но когда я изменил код функции main с юникода на многобайтовую кодировку

int main()
{
    char data[] = "TEST=DATA1234567";
    LPCSTR Header = "Content-Type: application/x-www-form-urlencoded; charset=utf-8";
    LPCSTR UserAgent = "UG";

    HINTERNET hInt = InternetOpenA(UserAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

    HINTERNET hCon = InternetConnectA(hInt, "192.168.0.101", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);

    HINTERNET hOpen = HttpOpenRequestA(hCon, "POST", "test", "HTTP/1.1", NULL, NULL, NULL, NULL);

    HttpSendRequestA(hOpen, Header, lstrlenA(Header), (LPVOID)data, lstrlenA(data));

    InternetCloseHandle(hInt);
    InternetCloseHandle(hCon);
    InternetCloseHandle(hOpen);
}

Вывод был какой и должен быть т.е.

{"TEST":"DATA1234567"}

Вопрос что я не так делаю используя юникод и как мне правильно отправить post запрос?


Ответы (0 шт):