diff --git a/platform/windows/godot_win.cpp b/platform/windows/godot_win.cpp index 2999a9beaea..ddfadf98cac 100644 --- a/platform/windows/godot_win.cpp +++ b/platform/windows/godot_win.cpp @@ -29,6 +29,7 @@ #include "os_windows.h" #include "main/main.h" #include +#include PCHAR* CommandLineToArgvA( @@ -114,15 +115,45 @@ PCHAR* return argv; } +char* mb_to_utf8(const char* mbs) { + int wlen = MultiByteToWideChar(CP_ACP,0,mbs,-1,NULL,0); + if (wlen < 0) + wlen = 0; + wchar_t *wbuf = new wchar_t[wlen + 1]; + MultiByteToWideChar(CP_ACP,0,mbs,-1,wbuf,wlen); + wbuf[wlen]=0; + + int ulen = WideCharToMultiByte(CP_UTF8,0,wbuf,-1,NULL,0,NULL,NULL); + if (ulen < 0) + ulen = 0; + char * ubuf = new char[ulen + 1]; + WideCharToMultiByte(CP_UTF8,0,wbuf,-1,ubuf,ulen,NULL,NULL); + ubuf[ulen] = 0; + return ubuf; +} + int main(int argc, char** argv) { OS_Windows os(NULL); - Main::setup(argv[0], argc - 1, &argv[1]); + setlocale(LC_CTYPE, ""); + + char ** argv_utf8 = new char*[argc]; + for(int i=0; i