diff options
| author | Léo Lam <leo@leolam.fr> | 2020-10-20 01:45:28 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-20 01:45:28 +0200 |
| commit | 98875346bddbd09e0bccd98fdb2ca22df71bf86d (patch) | |
| tree | 7295496697bbd377ddcd4cce0995c3b8a23dcebf /Source/Core/Common/StringUtil.cpp | |
| parent | 680ff4d168663c1f9188560ee02b8afcccc5196b (diff) | |
| parent | 17e02838b0c885992c7148c2cd017c326b5b6d99 (diff) | |
Merge pull request #9104 from JosJuice/cmd-unicode
DolphinQt: Handle non-ASCII characters in Windows cmd arguments
Diffstat (limited to 'Source/Core/Common/StringUtil.cpp')
| -rw-r--r-- | Source/Core/Common/StringUtil.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Source/Core/Common/StringUtil.cpp b/Source/Core/Common/StringUtil.cpp index bbc281460c..5ef8b01d24 100644 --- a/Source/Core/Common/StringUtil.cpp +++ b/Source/Core/Common/StringUtil.cpp @@ -31,6 +31,7 @@ #ifdef _WIN32 #include <Windows.h> +#include <shellapi.h> constexpr u32 CODEPAGE_SHIFT_JIS = 932; constexpr u32 CODEPAGE_WINDOWS_1252 = 1252; #else @@ -630,3 +631,22 @@ std::string PathToString(const std::filesystem::path& path) #endif } #endif + +#ifdef _WIN32 +std::vector<std::string> CommandLineToUtf8Argv(const wchar_t* command_line) +{ + int nargs; + LPWSTR* tokenized = CommandLineToArgvW(command_line, &nargs); + if (!tokenized) + return {}; + + std::vector<std::string> argv(nargs); + for (size_t i = 0; i < nargs; ++i) + { + argv[i] = WStringToUTF8(tokenized[i]); + } + + LocalFree(tokenized); + return argv; +} +#endif |
