diff options
| author | JosJuice <josjuice@gmail.com> | 2018-10-26 14:19:16 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2018-10-26 14:26:21 +0200 |
| commit | 5718b870d1793afaf60944dfc1b086d370389538 (patch) | |
| tree | 4d12a1b379c0d0edf040669698412cf99b107a72 /Source/Core/Common/Timer.cpp | |
| parent | 61821b067f9f5fac85188d8abc0841ce9529d0f1 (diff) | |
Use wcsftime instead of strftime on Windows to fix encoding errors
Reported by https://forums.dolphin-emu.org/Thread-odd-codes-appear-in-save-load-state-when-chinese-language-is-used
Diffstat (limited to 'Source/Core/Common/Timer.cpp')
| -rw-r--r-- | Source/Core/Common/Timer.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/Source/Core/Common/Timer.cpp b/Source/Core/Common/Timer.cpp index 081dd2008c..1d25cc0f71 100644 --- a/Source/Core/Common/Timer.cpp +++ b/Source/Core/Common/Timer.cpp @@ -7,6 +7,8 @@ #include <string> #ifdef _WIN32 +#include <cwchar> + #include <windows.h> #include <mmsystem.h> #include <sys/timeb.h> @@ -203,14 +205,19 @@ std::string Timer::GetTimeFormatted() struct tm* gmTime = localtime(&sysTime); +#ifdef _WIN32 + wchar_t tmp[13]; + wcsftime(tmp, 6, L"%M:%S", gmTime); +#else char tmp[13]; strftime(tmp, 6, "%M:%S", gmTime); +#endif // Now tack on the milliseconds #ifdef _WIN32 struct timeb tp; (void)::ftime(&tp); - return StringFromFormat("%s:%03i", tmp, tp.millitm); + return UTF16ToUTF8(tmp) + StringFromFormat(":%03i", tp.millitm); #elif defined __APPLE__ struct timeval t; (void)gettimeofday(&t, nullptr); @@ -265,9 +272,15 @@ std::string Timer::GetDateTimeFormatted(double time) time_t seconds = (time_t)time + DOUBLE_TIME_OFFSET; tm* localTime = localtime(&seconds); +#ifdef _WIN32 + wchar_t tmp[32] = {}; + wcsftime(tmp, sizeof(tmp), L"%x %X", localTime); + return UTF16ToUTF8(tmp); +#else char tmp[32] = {}; strftime(tmp, sizeof(tmp), "%x %X", localTime); return tmp; +#endif } } // Namespace Common |
