《经典精彩Lib翻译》系列之libiconv (1)libiconv的介绍 收藏 <!--[if !vml]--><!--[endif]-->libiconv翻译:兵不厌库like.lib@gmail.com China2007-11-21查看原文http://www.gnu.org/software/libiconv/ 介绍由于历史原因,国际上的各国文字都是依赖于自己本国语言而编码的。后来,随着Internet的出现和各国之间逐渐频繁的文字交流(比如浏览国外的Web页面),编码之间的转换就显得非常重要。这时也出现了一个问题,很多字符在一种编码中出现而没有被另一种编码包含。为了解决这种编码带来的混乱,人们发明了Unicode编码。它是所有编码的超集,因此成为新的文本格式的默认编码,象XML。 尽管如此,很多计算机在当地仍然使用传统字符编码方式。有些程序,象邮件客户端和Web浏览器,必须能够在原编码方式和用户本地编码方式之间进行转换;还有一些程序,为了方便内部处理,内部用Unicode存储,当作I/O 操作时,需要在内部编码方式(Unicode)和外部展现的编码方式(传统编码)之间转换。 GNU libiconv就是一个实现上述两种应用的转换库。 细节本库提供了iconv()的实现,应用于没有支持编码转换的系统。 支持以下编码方式: <!--[if !supportLists]-->l <!--[endif]-->欧洲语言ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16}, KOI8-R, KOI8-U, KOI8-RU, CP{1250,1251,1252,1253,1254,1257}, CP{850,866}, Mac{Roman,CentralEurope,Iceland,Croatian,Romania}, Mac{Cyrillic,Ukraine,Greek,Turkish}, Macintosh<!--[if !supportLists]-->l <!--[endif]-->犹太语言ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic}<!--[if !supportLists]-->l <!--[endif]-->日语EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1<!--[if !supportLists]-->l <!--[endif]-->中文EUC-CN, HZ, GBK, CP936, GB18030, EUC-TW, BIG5, CP950, BIG5-HKSCS, BIG5-HKSCS:2001, BIG5-HKSCS:1999, ISO-2022-CN, ISO-2022-CN-EXT<!--[if !supportLists]-->l <!--[endif]-->韩语EUC-KR, CP949, ISO-2022-KR, JOHAB<!--[if !supportLists]-->l <!--[endif]-->亚美尼亚语ARMSCII-8<!--[if !supportLists]-->l <!--[endif]-->亚美尼亚语Georgian-Academy, Georgian-PS<!--[if !supportLists]-->l <!--[endif]-->塔吉克语KOI8-T<!--[if !supportLists]-->l <!--[endif]-->哈萨克语PT154<!--[if !supportLists]-->l <!--[endif]-->泰国语ISO-8859-11, TIS-620, CP874, MacThai<!--[if !supportLists]-->l <!--[endif]-->老挝语MuleLao-1, CP1133<!--[if !supportLists]-->l <!--[endif]-->越南语VISCII, TCVN, CP1258<!--[if !supportLists]-->l <!--[endif]-->特殊平台HP-ROMAN8, NEXTSTEP<!--[if !supportLists]-->l <!--[endif]-->Full UnicodeUTF-8 UCS-2, UCS-2BE, UCS-2LE UCS-4, UCS-4BE, UCS-4LE UTF-16, UTF-16BE, UTF-16LE UTF-32, UTF-32BE, UTF-32LE UTF-7 C99, JAVA <!--[if !supportLists]-->l <!--[endif]-->Full Unicode, 按uint16_t/uint32_t (with machine dependent endianness and alignment)UCS-2-INTERNAL, UCS-4-INTERNAL<!--[if !supportLists]-->l <!--[endif]-->Locale dependent, 按char/wchar_t (with machine dependent endianness and alignment, and with OS and locale dependent semantics)char, wchar_t 名称为空的编码方式等同于“char”:表示依赖本地的字符编码。 如果配置了选项--enable-extra-encodings,还支持部分其它编码方式:<!--[if !supportLists]-->l <!--[endif]-->欧洲语言CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125}<!--[if !supportLists]-->l <!--[endif]-->犹太语言CP864<!--[if !supportLists]-->l <!--[endif]-->日语EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3<!--[if !supportLists]-->l <!--[endif]-->中文BIG5-2003 (experimental)<!--[if !supportLists]-->l <!--[endif]-->土库曼语TDS565<!--[if !supportLists]-->l <!--[endif]-->特殊平台ATARIST, RISCOS-LATIN1 通过与Unicode之间的转换,libiconv支持所有这些编码方式的任意转换。 安装GNU包的常规安装:$ ./configure --prefix=/usr/local$ make$ make install 第一次安装libiconv库后,强烈建议你重新编译和重新安装gettext,使它能使用libiconv强大的功能。 在非GUN/Linux系统上,只有gettext在libiconv之前生成和安装,采用iconv的程序才能支持国际化。也就是说,首先安装libiconv,libiconv和gettext之间的循环依赖关系,可通过生成、安装任一包来解决。顺序1:libiconv -> gettext -> libiconv,或顺序2:gettext -> libiconv -> gettext(支持共享库的系统,AIX除外)记住,第二次生成包时,你需要运行"make distclean"来清除第一次生成时留下的痕迹。 这个库的生成、安装有两种模式。<!--[if !supportLists]-->² <!--[endif]-->库模式(library mode)。可工作在所有系统上,使用库文件libiconv.so和头文件<iconv.h>(两个文件通过“make install”安装)使用这种模式,只需简单地#include <iconv.h>,然后使用函数。自动配置包方式(autoconfiguring package)使用这种模式: •如果不使用automake,将m4/iconv.m4附加到你的aclocal.m4文件中;•如果使用automake,将m4/iconv.m4添加到你的m4 macro repository;•运用占位符@LIBICONV@(使用libtool创建链接,则为@LTLIBICONV@),将使用iconv函数的库文件和可执行文件添加到链接命令行中。如果使用automake,这些占位符的右边是*_LDADD。注意,iconv.m4也是gettext包的一部分,安装在/usr/local/share/aclocal/iconv.m4。 <!--[if !supportLists]-->² <!--[endif]-->libc的插入/重载模式(libc plug/override mode)。仅工作在GNU/Linux、Solaris和OSF/1系统上。是一种在没有glibc时来获取较好的iconv支持的途径。这种模式安装库文件preloadable_libiconv.so,通过选项LD_PRELOAD,来重载所有C语言库中的iconv*函数。•GNU/Linux和Solaris系统:$ export LD_PRELOAD=/usr/local/lib/preloadable_libiconv.so•OSF/1系统:$ export _RLD_LIST=/usr/local/lib/preloadable_libiconv.so:DEFAULT 程序的代码不需要修改,甚至不需要重新编译,仅仅设置环境变量LD_PRELOAD即可。 下载libiconvlibiconv在GNU镜像站点 的子目录/pub/gnu/libiconv/找到。通过其他途径获取libiconv,请阅读怎样获取GNU软件。最新发布版本是 http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz
文档下面列出了相关在线文档的链接。iconv程序iconv.1.html 库函数iconv_open.3.html iconv.3.html iconv_close.3.html iconvctl.3.html
本文来自博客,转载请标明出处:http://blog.csdn.net/allisnew/archive/2007/11/23/1899202.aspx