summaryrefslogtreecommitdiff
path: root/Source/Core/Common/StringUtil.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-10-20 01:45:28 +0200
committerGitHub <noreply@github.com>2020-10-20 01:45:28 +0200
commit98875346bddbd09e0bccd98fdb2ca22df71bf86d (patch)
tree7295496697bbd377ddcd4cce0995c3b8a23dcebf /Source/Core/Common/StringUtil.cpp
parent680ff4d168663c1f9188560ee02b8afcccc5196b (diff)
parent17e02838b0c885992c7148c2cd017c326b5b6d99 (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.cpp20
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