0

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

也许我根本不应该在 Mac 上使用 iconv?是否有用于字符集转换的替代 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上产生垃圾。

4

1 回答 1

2

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

更多信息在这里

于 2010-12-06T05:03:03.710 回答