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

須要字符庫的支持:html

 

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

iconv相關文件

在PC機上使用iconv通常都會正常,可是一旦到了嵌入式linux中,每每會調用失敗,這是由於缺乏相關文件。libc只實現了接口iconv,編碼

但並無實現具體的轉換細節,能夠想一想,那麼多的編碼類型,若是都集成到libc庫中,該是多麼龐大!實際上轉換細節使用動態連接庫實現的。htm

文件位於:blog

/usr/lib/gconv接口

再看具體文件:get

gconv-modules:指出了作相應轉換應該調用的文件編譯器

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

因此,爲了支持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

是否是很方便,後面有時間再研究下如何本身編譯這些動態連接庫。。。

相關文章
相關標籤/搜索