哪些API可用于在MacOSX上进行字符集转换? (iconv不适合我)

时间:2010-12-06 04:53:53

标签: macos iconv

在电子邮件客户端的上下文中,我需要转换为许多不同的字符集和unicode。到目前为止,在Windows和Linux上,我一直在使用iconv在字符集之间进行文本转换。然而在Mac上我尝试的第一次转换,从cp932到utf-16失败,带有一堆垃圾字符。我有一个谷歌,有些人建议首先使用setlocale设置语言环境,但这似乎不会影响事情。

也许我根本不应该在Mac上使用iconv?是否有用于charset转换的替代API?

我对修复iconv代码的建议持开放态度......代码基本上是这样的:

setlocale(LC_ALL,"");

iconv_t Conv;
if ((Conv = libiconv_open("utf-16", "cp932")) >= 0)
{
    // Convert
    int s = libiconv(Conv, &InBuf, (size_t*)&InLen, &OutBuf, (size_t*)&OutLen);
    libiconv_close(Conv);
}

Windows上的相同输入文本工作正常,在mac上产生垃圾。

1 个答案:

答案 0 :(得分:2)

CFString(-framework CoreFoundation)具有字符转换API。基本上,您从CP932(kCFStringEncodingDOSJapanese)字符串创建CFString,然后您可以从中提取UTF-16数据。

更多信息here