《经典精彩Lib翻译》系列之libiconv (1)libiconv的介绍

 [image of the Head of a GNU] 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()的实现,应用于没有支持编码转换的系统。

 

支持以下编码方式:

 

l        欧洲语言

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

l        犹太语言

ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic}

l        日语

EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1

l        中文

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

l        韩语

EUC-KR, CP949, ISO-2022-KR, JOHAB

l        亚美尼亚语

ARMSCII-8

l        亚美尼亚语

Georgian-Academy, Georgian-PS

l        塔吉克语

KOI8-T

l        哈萨克语

PT154

l        泰国语

ISO-8859-11, TIS-620, CP874, MacThai

l        老挝语

MuleLao-1, CP1133

l        越南语

VISCII, TCVN, CP1258

l        特殊平台

HP-ROMAN8, NEXTSTEP

l        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

l        Full Unicode, uint16_t/uint32_t (with machine dependent endianness and alignment)

UCS-2-INTERNAL, UCS-4-INTERNAL

l        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,还支持部分其它编码方式:

l        欧洲语言

CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125}

l        犹太语言

CP864

l        日语

EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3

l        中文

BIG5-2003 (experimental)

l        土库曼语

TDS565

l        特殊平台

ATARIST, RISCOS-LATIN1

 

通过与Unicode之间的转换,libiconv支持所有这些编码方式的任意转换。

 

安装

GNU包的常规安装:

$ ./configure --prefix=/usr/local
$ make
$ make install

 

第一次安装libiconv库后,强烈建议你重新编译和重新安装gettext,使它能使用libiconv强大的功能。

 

在非GUN/Linux系统上,只有gettextlibiconv之前生成和安装,采用iconv的程序才能支持国际化。也就是说,首先安装libiconvlibiconvgettext之间的循环依赖关系,可通过生成、安装任一包来解决。

顺序1libiconv -> gettext -> libiconv,或

顺序2gettext -> libiconv -> gettext(支持共享库的系统,AIX除外)

记住,第二次生成包时,你需要运行"make distclean"来清除第一次生成时留下的痕迹。

 

这个库的生成、安装有两种模式。

²       库模式(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

 

²       libc的插入/重载模式(libc plug/override mode)。仅工作在GNU/LinuxSolarisOSF/1系统上。是一种在没有glibc时来获取较好的iconv支持的途径。

这种模式安装库文件preloadable_libiconv.so,通过选项LD_PRELOAD,来重载所有C语言库中的iconv*函数。

  • GNU/LinuxSolaris系统:

$ export LD_PRELOAD=/usr/local/lib/preloadable_libiconv.so

  • OSF/1系统:

$ export _RLD_LIST=/usr/local/lib/preloadable_libiconv.so:DEFAULT

 

程序的代码不需要修改,甚至不需要重新编译,仅仅设置环境变量LD_PRELOAD即可。

 

下载libiconv

libiconvGNU镜像站点 的子目录/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

 

 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值