setlocale()在iOS模拟器中不起作用?

更新:奇怪的是,setlocale()只在iOS模拟器上失败,所以我修改了问题标题。 它在实际设备上正常工作。

我正在使用iOS 6下的本地(C / C ++)代码,我需要格式化任意的wchar_tstring。 但是,在格式化包含Latin-1代码页外的代码点的string时, swprintf失败(返回值为errno = EILSEQ值-1)。

 wchar_t buff[256]; swprintf(buff, 256, L"\u00A9 %ls", L"ascii"); // works swprintf(buff, 256, L"\u03A0 %ls", L"ascii"); // will return -1 

在问这里的相关问题之后,问题似乎是语言环境设置不正确(我已经validation该解决scheme在Mac OS X下工作)。 但在iOS 6下似乎没有效果:

 #include <locale.h> setlocale(LC_CTYPE,""); 

按照这里的说明,我已经手动复制/添加区域设置文件到我的项目,并设置PATH_LOCALE环境variables,但问题依然存在:

 NSString* resourcePath=[[NSBundle mainBundle] resourcePath]; setenv("PATH_LOCALE", [resourcePath UTF8String], 1); setlocale(LC_CTYPE,"en_US.UTF-8"); 

有谁知道我可以如何让setlocale()在iOS 6下工作(同时还有苹果商店接受的应用程序)?