簡體   English   中英

Mac OS X上的iconv庫:奇怪的行為

[英]iconv library on Mac OS X: strange behavior

我正在將應用程序從CentOS 6移植到Mac OSX。它取決於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。 當使用相同的參數調用相同的函數(一個是硬編碼數組的元素,另一個是硬編碼字符串)時,導致這種情況的原因可能是什么?第一次調用導致正常功能,而第二個調用失敗?

第二個“ UTF-32”與第一個不同:我猜第一個使用普通的減號,而第二個使用內灰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM