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
// initialization which is always done (not customizable) before wxApp creation
static bool DoCommonPreInit()
{
// 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();
#if wxUSE_LOG
// Reset logging in case we were cleaned up and are being reinitialized.
wxLog::DoCreateOnDemand();