【问题标题】:iconv library on Mac OS X: strange behaviorMac OS X 上的 iconv 库:奇怪的行为
【发布时间】:2012-10-04 12:06:30
【问题描述】:

我正在将应用程序从 CentOS 6 移植到 Mac OS X。它依赖于 iconv 并在 CentOS 中正常工作。但是,在 Mac OS X 上却没有。我看到以下行为:

const char *codePages[] = { "MAC", "LATIN1", "ISO_8859-1", "WINDOWS-1252", "ASCII" };
int codePagesCount = 5;
iconv_t converter1 = iconv_open("UTF-32", codePages[0]);// Works
if(converter1 != (iconv_t)-1)
   iconv_close(converter1);
iconv_t converter2 = iconv_open("UTF−32", "MAC");// Fails, returns -1
if(converter2 != (iconv_t)-1)
   iconv_close(converter2);

这段代码看起来很简单:第一个 iconv_open 创建转换器并从 codePages 数组中获取代码页名称,它的零元素是 MAC,所以对我来说 Mac OS X 必须支持从它自己的代码页到 Unicode 的转换是合乎逻辑的.第一次调用 iconv_open 有效。 但是,对 iconv_open 的第二次调用也是如此。它还创建了从 Mac 编码到 Unicode 的转换器。并且由于任何原因它失败并返回-1。 当调用具有相同参数的相同函数(一个是硬编码数组的元素,另一个是硬编码字符串)导致第一次调用的功能正常而第二次调用失败时,这种情况的原因可能是什么?

【问题讨论】:

    标签: c++ xcode macos iconv


    【解决方案1】:

    第二个“UTF-32”与第一个不同:第一个使用普通减号,而第二个使用 endash 我猜。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2013-06-19
    • 2014-03-15
    相关资源
    最近更新 更多