summaryrefslogtreecommitdiff
path: root/Source/Core/Common/StringUtil.h
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2018-03-10 12:12:32 +0100
committerJosJuice <josjuice@gmail.com>2018-03-10 12:13:30 +0100
commit34be8488a5c59b8d70ea8ae048b0d5628d71ee0f (patch)
tree086dd4123dddcbb4dd3a4f68cbbaa99bc2365899 /Source/Core/Common/StringUtil.h
parent63838c013bde06ed13bfc1b5e24c53594934f641 (diff)
StringUtil: Fix Windows encoding in ThousandSeparate
Some locales use non-breaking spaces as separators, so getting the encoding right is important. If DolphinWX gets a string that isn't valid UTF-8, it flat out won't display the string.
Diffstat (limited to 'Source/Core/Common/StringUtil.h')
-rw-r--r--Source/Core/Common/StringUtil.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/Source/Core/Common/StringUtil.h b/Source/Core/Common/StringUtil.h
index b5632c364b..ec2e5c6337 100644
--- a/Source/Core/Common/StringUtil.h
+++ b/Source/Core/Common/StringUtil.h
@@ -45,15 +45,23 @@ std::string StripQuotes(const std::string& s);
template <typename I>
std::string ThousandSeparate(I value, int spaces = 0)
{
- std::ostringstream oss;
+#ifdef _WIN32
+ std::wostringstream stream;
+#else
+ std::ostringstream stream;
+#endif
// std::locale("") seems to be broken on many platforms
#if defined _WIN32 || (defined __linux__ && !defined __clang__)
- oss.imbue(std::locale(""));
+ stream.imbue(std::locale(""));
#endif
- oss << std::setw(spaces) << value;
+ stream << std::setw(spaces) << value;
- return oss.str();
+#ifdef _WIN32
+ return UTF16ToUTF8(stream.str());
+#else
+ return stream.str();
+#endif
}
std::string StringFromBool(bool value);