iconv_open() 出現 Invalid argument 錯誤的解決方法


需要字符庫的支持:

 

轉載:https://www.cnblogs.com/JonnyLulu/archive/2013/07/22/3170118.html

iconv相關文件

在PC機上使用iconv一般都會正常,但是一旦到了嵌入式linux中,往往會調用失敗,這是因為缺少相關文件。libc只實現了接口iconv,

但並沒有實現具體的轉換細節,可以想想,那么多的編碼類型,如果都集成到libc庫中,該是多么龐大!實際上轉換細節使用動態鏈接庫實現的。

文件位於:

/usr/lib/gconv

再看具體文件:

gconv-modules:指出了做相應轉換應該調用的文件

*.so:實現由內部編碼到某種編碼轉換的動態鏈接庫

所以,為了支持UTF-16到GBK的轉換,我們至少需要3個文件:

  UTF-16.so

  GBK.so

  gconv-modules

其中gconv-modules應包含如下內容:

# from to module cost
module GBK//     INTERNAL    GBK 1
module INTERNAL   GBK//      GBK 1

# from to module cost
module UTF-16//    INTERNAL   UTF-16 1
module INTERNAL   UTF-16//    UTF-16 1

   那么這些文件從那里來呢,最方便的就是從編譯器目錄拷貝,例如CodeSourcery g++ Lite(某廠商提供的ARM GCC),對應默認指令集的庫的

路徑是:

arm-none-linux-gnueabi/libc/usr/lib/gconv

是不是很方便,后面有時間再研究下如何自己編譯這些動態鏈接庫。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM