在电子邮件客户端的上下文中,我需要在许多不同的字符集和 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上产生垃圾。