手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

geniconvtbl(1)

名称

geniconvtbl - 生成 iconv 代码转换表

用法概要

geniconvtbl [-fnq] [-p preprocessor] [-W arg] [-Dname] 
     [-Dname=def] [-Idirectory] [-Uname] [infile]...

描述

geniconvtbl 实用程序接受在纯文本文件中定义的代码转换规则并编写可用于支持用户定义的 iconv 代码转换的代码转换二进制表文件(有关 iconv 代码转换的更多详细信息,请参见 iconv(1)iconv(3C))。

选项

支持以下选项:

–f

如果输出文件已存在,则覆盖该输出文件。

–n

不生成输出文件。在检查输入文件的内容时这比较有用。

–p preprocessor

使用指定的 preprocessor 而不是使用缺省的预处理程序 /usr/lib/cpp

–q

静默选项。此选项抑制警告和错误消息。

–W arg

将参数 arg 传递到预处理程序。如果多次指定了此选项,会将所有参数传递到预处理程序。

–Dname
–Dname=def
–Idirectory
–Uname

geniconvtbl 可识别这些选项并将它们及其参数传递到预处理程序。

操作数

支持下列操作数:

infile

输入文件的路径名称。如果未指定输入文件,geniconvtbl 将从标准输入流中读取输入。如果需要,用户可以指定多个输入文件。

输出

输出

如果从标准输入流中读取输入,geniconvtbl 会将输出写入到标准输出流中。如果指定了一个或多个输入文件,geniconvtbl 会从每个输入文件中读取输入并将输出写入到相应的输出文件中。每个输出文件名称将与相应的输入文件相同,且文件名后缀为 .bt

在使用 iconv(1)iconv(3C) 中的代码转换之前,必须将生成的输出文件移动到以下目录中:

/usr/lib/iconv/geniconvtbl/binarytables/

输出文件名称应该以一个或多个可打印的 ASCII 字符开头作为 "fromcode" 名称,后跟一个百分比字符 (%),然后跟有一个或多个可打印的 ASCII 字符作为 "tocode" 名称,最后以后缀 ".bt" 结尾。"fromcode" 和 "tocode" 名称用于标识 iconv(1)iconv_open(3C) 中的 iconv 代码转换。应将正确命名的输出文件放置在 /usr/lib/iconv/geniconvtbl/binarytables/ 目录中。

示例

示例 1 生成 iconv 代码转换二进制表

以下示例生成输出文件名称为 convertA2B.bt 的代码转换二进制表:

example% geniconvtbl convertA2B
示例 2 生成多个 iconv 代码转换二进制表

以下示例生成两个代码转换二进制表,其输出文件分别为 test1.bttest2.bt

example% geniconvtbl test1 test2
示例 3 使用另一个预处理程序

在指定的预处理程序处理了输入文件后,以下示例会生成代码转换二进制表:

example% geniconvtbl -p /opt/SUNWspro/bin/cc -W -E convertB2A
示例 4 放置二进制表

要使用在上面的第一个示例中创建的二进制表作为 "fromcode" ABC 到 "tocode" DEF 的转换引擎,首先需成为超级用户,然后重命名该二进制表,并将其按如下方式放置:

example# mv convertA2B.bt \
    /usr/lib/iconv/geniconvtbl/binarytables/ABC%DEF.bt
示例 5 提供修改的 ISO8859-1 到 UTF-8 代码转换

编写定义了代码转换的 geniconvtbl 源文件。例如,您可以将 /usr/lib/iconv/geniconvtbl/srcs/ISO8859-1_to_UTF-8.src 复制到您的目录中,然后在该源文件中进行必要的更改。在进行修改后,生成二进制表:

example% geniconvtbl ISO8859-1_to_UTF-8.src

作为超级用户,将生成的具有唯一名称的二进制表放置在 iconv_open(3C) 可以在其中找到该二进制表的系统目录中:

example su
Password:
example% cp ISO8859-1_to_UTF-8.bt \
    /usr/lib/iconv/geniconvtbl/binarytables/my-iso-8859-1%utf-8.bt

之后,您可以执行 iconv 代码转换。例如:

example% iconv -f my-iso-8859-1 -t utf-8 testfile.txt

环境变量

有关影响 geniconvtbl 执行的环境变量 LANG 和 LC_CTYPE 的描述,请参见 environ(5)

退出状态

将返回以下退出值:

0

没有发生任何错误,输出文件已成功创建。

1

未正确使用命令行选项,或指定了未知的命令行选项。

2

指定的输入或输出文件无效。

3

输入文件中的转换规则未正确定义。

4

已经达到了输入文件的转换规则限制。请参见 geniconvtbl(4) 的“附注”部分。

5

没有更多的系统资源错误。

6

内部错误。

文件

/usr/lib/iconv/geniconvtbl/binarytables/*.bt

转换二进制表

/usr/lib/iconv/geniconvtbl/srcs/*

供用户参考的转换源文件

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

cpp(1)iconv(1)iconv(3C)iconv_close(3C)iconv_open(3C)geniconvtbl(4)attributes(5)environ(5)iconv(5)

Solaris Internationalization Guide for Developers

附注

所生成的并正确放置的输出文件 (/usr/lib/iconv/geniconvtbl/binarytables/*.bt) 可用于 32 位和 64 位环境。