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

是否是很方便,后面有时间再研究下如何本身编译这些动态连接库。。。

相关文章
相关标签/搜索