osx locale bug?

时间:2012-05-28 14:53:28

标签: c++ macos locale

我想移植我们的应用程序(适用于Windows,Linux,Solaris,AIX等),但我的语言环境有很多问题。此代码适用于所有平台,OSX除外:

#define SIZE 1000

int main(int argc, const char * argv[])
{    
    char dest[SIZE];
    wchar_t *dptr = L"árvíztűrőtükörfúrógép";
    size_t count = SIZE;
    size_t length;

    setlocale(LC_CTYPE, "");

    length = wcstombs(dest, dptr, count);
    printf("%d characters were converted.\n", length);
    printf("The converted string is \"%s\"\n\n", dest);
}

请帮助我们,用ISO-8859-2编码在终端打印该文本!

非常感谢!

1 个答案:

答案 0 :(得分:3)

Apple Macintosh既不使用ISO 8859-1也不使用ISO 8859-2编码。相反,Apple使用专有代码表,即用于西欧的MacRoman和用于东欧语言的MacCentralEuropean。 Macintosh上的WWW浏览器(Netscape Navigator 2及更高版本,以及Microsoft Internet Explorer 2.1)自动执行从Internet上使用的ISO 8859编码到Macintosh本机字符集的重新编码。

从这里采取:http://nl.ijs.si/gnusl/cee/iso8859-2.html

以下是您的需求:http://en.wikipedia.org/wiki/Mac_OS_Roman

这是UTF-8< - > MacRoman转换代码:http://alienryderflex.com/utf-8/

只有“u”和“o”的修饰符(在这些字母后插入)才能获得“ő”和“ű”字符。

请参阅此处的表http://www.alanwood.net/demos/macroman.html

“˝”,Code = 0xFD,U + 02DD,“double acute accent”,间距修饰符字母

(在行动中“思考不同”)