From: Václav Slavík Date: Sat, 25 Aug 2012 11:14:44 +0000 (+0000) Subject: Make sure wchar_t CRT functions work on OS X. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/270bae200da5680a55b3f5eced49a9d32d49c80f Make sure wchar_t CRT functions work on OS X. In OS X and iOS, wchar_t CRT functions convert to char* and fail under some locales. The safest fix is to set LC_CTYPE to UTF-8 to ensure that they can handle any input. Note that this must be done for any app, Cocoa or console, whether or not it uses wxLocale. See http://stackoverflow.com/questions/11713745/why-does-the-printf-family-of-functions-care-about-locale git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/init.cpp b/src/common/init.cpp index 8b11d75ce1..08a51de755 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -218,6 +218,18 @@ static void FreeConvertedArgs() // initialization which is always done (not customizable) before wxApp creation static bool DoCommonPreInit() { +#if wxUSE_UNICODE && defined(__WXOSX__) + // In OS X and iOS, wchar_t CRT functions convert to char* and fail under + // some locales. The safest fix is to set LC_CTYPE to UTF-8 to ensure that + // they can handle any input. + // + // Note that this must be done for any app, Cocoa or console, whether or + // not it uses wxLocale. + // + // See http://stackoverflow.com/questions/11713745/why-does-the-printf-family-of-functions-care-about-locale + setlocale(LC_CTYPE, "UTF-8"); +#endif // wxUSE_UNICODE && defined(__WXOSX__) + #if wxUSE_LOG // Reset logging in case we were cleaned up and are being reinitialized. wxLog::DoCreateOnDemand();