```
#include <iostream>
#include <Windows.h>
#include <locale>
#include <string>
#include <codecvt>
typedef wchar_t* LPWSTR, *PWSTR;

template <typename Facet>
struct deletable_facet : Facet
{
    using Facet::Facet;
};

int main(int argc, char *argv[])
{
    std::cout << argv[0] << std::endl;

    std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
    //std::wcout << converter.from_bytes(argv[0]) << std::endl; // range error

    std::wstring_convert<deletable_facet<std::codecvt<wchar_t, char, std::mbstate_t>>> conv;
    std::wstring ns = conv.from_bytes(argv[0]);
    std::wcout << ns << std::endl;

    wchar_t filename[MAX_PATH];
    //GetModuleFileName(NULL,filename,MAX_PATH); // cant convert wstring_t* to char*
    GetModuleFileNameW(NULL,filename,MAX_PATH);
    std::wcout << filename << std::endl;

    getchar();
    return 0;
}

```

Output:

```
 C:\Users\luka\Desktop\ⁿ?icΣ\unicode.exe
 C:\Users\luka\Desktop\ⁿ?icΣ\unicode.exe
 C:\Users\luka\Desktop\ⁿ

```

Actual name of the folder is üлicä

Ive been trying many many different ways for about 2 hours now, and as far as ive seen people suggested GetModuleFileName , but as you can see that returns a conversion error (typedef wchar\_t\* LPWSTR, \*PWSTR; isnt fixing it).

So is there any way to to get the current folder path in unicode , and get the rest of the input arguments to unicode (non-latin characters)