转载

  《经典精彩Lib翻译》系列之libiconv (1)libiconv的介绍 收藏
<!--[if !vml]--><!--[endif]-->libiconv翻译:兵不厌库
like.lib@gmail.com
China
2007-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 Unicode
UTF-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


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/allisnew/archive/2007/11/23/1899202.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值