国际语言环境指南

TTY 环境设置

根据所使用的终端和终端仿真器的不同,您可能需要将某些特定代码集的 STREAMS 模块 Push 到流上。

有关 STREAMS 模块和一般流的详细信息,请参见《STREAMS Programming Guide》。

下表 显示在终端环境中受 en_US.UTF-8 语言环境支持的 STREAMS 模块。

表 5–7 en_US.UTF-8 所支持的 32 位 STREAMS 模块

32 位 STREAMS 模块 

说明 

/usr/kernel/strmod/u8lat1

UTF-8ISO8859–1 (西欧语言)之间的代码转换 STREAMS 模块

/usr/kernel/strmod/u8lat2

UTF-8ISO8859–2 (东欧语言)之间的代码转换 STREAMS 模块

/usr/kernel/strmod/u8koi8

UTF-8KOI8–R (西里尔文)之间的代码转换 STREAMS 模块

下表列出 en_US.UTF-8 所支持的 64 位 STREAMS 模块。

表 5–8 en_US.UTF-8 所支持的 64 位 STREAMS 模块

64 位 STREAMS 模块 

说明 

/usr/kernel/strmod/sparcv9/u8lat1

UTF-8ISO8859-1(西欧语言)之间的代码转换 STREAMS 模块

/usr/kernel/strmod/sparcv9/u8lat2

UTF-8ISO8859-2(东欧语言)之间的代码转换 STREAMS 模块

/usr/kernel/strmod/sparcv9/u8koi8

UTF-8 KOI8-R(西里尔文)之间的代码转换 STREAMS 模块

将 STREAMS 模块装入内核

要将 STREAMS 模块装入内核,请首先成为超级用户。

要确定您使用的是 64 位 Solaris 还是 32 位 Solaris 系统,请使用 isainfo(1) 公用程序,如下所示:

system# isainfo -v
64-bit sparcv9 applications
32-bit sparc applications

如果该命令返回此信息,则您所运行的是 64 位 Solaris 系统。如果运行的是 32 位 Solaris 系统,则此公用程序将显示以下内容:

system# isainfo -v
32-bit sparc applications

使用 modinfo(1M) 来确保您的系统尚未装入 STREAMS 模块:

system# modinfo | grep  modulename

如果已安装了 STREAMS 模块(如 u8lat1), 则输出将类似于以下内容:

system# modinfo | grep u8lat1
89 ff798000  4b13  18   1  u8lat1 (UTF-8 <--> ISO 8859-1 module)

如果该模块已安装,您就无须再装入它了。但如果该模块尚未装入,请使用 modload(1M),如下所示:

system# modload /usr/kernel/strmod/u8lat1

该命令将 32 位 u8lat1 STREAMS 模块装入到内核中,这样您就可以将其推 (Push) 入流中。如果您所运行的是 64 位 Solaris 产品,请使用 modload(1M),如下所示:

system# modload /usr/kernel/strmod/sparcv9/u8lat1

STREAMS 模块已装入到内核中,此时您就可以将其推入到流中了。

要从内核中卸下一个模块,请使用 modunload(1M),如下所示。在此示例中,u8lat1 模块正被卸下。

system# modinfo | grep u8lat1
89 ff798000  4b13  18   1  u8lat1 (UTF-8 <--> ISO 8859-1 module)
system# modunload -i 89

能够输入和输出 UTF-8 字符的 dtterm 和终端

与 Solaris 操作环境以前的版本不同,支持输入和输出 UTF-8 代码集的 dtterm(1) 终端和任何其它终端在它们的流中无需任何附加的 STREAMS 模块。ldterm(7M) 模块现在是与代码集无关的,并且还支持 Unicode/UTF-8

要为 Unicode 语言环境设置正确的终端环境,请使用 stty(1) 公用程序。 要查询当前的设置,请使用 stty(1) 公用程序的 -a 选项,如下所示:

system% /bin/stty -a

注意:

由于 /usr/ucb/stty 未经国际化,因此请改用 /bin/stty


Latin-1、Latin-2 或 KOI8-R 的终端支持

对于仅支持 Latin-1 (ISO8859-1)、Latin-2 (ISO8859-2) 或 KOI8-R 的终端,您应具有下列 STREAMS 配置:

head <-> ttcompat <->  ldterm <->  u8lat1 <-> TTY

此配置仅适用于支持 Latin-1 的终端。 对于 Latin-2 终端,请将 STREAMS 模块 u8lat1 替换为 u8lat2。对于 KOI8-R 终端,请将该模块替换为 u8koi8

确保已将 STREAMS 模块装入到了内核中。

要设置以上显示的 STREAMS 配置,请使用 strchg (1M),如此示例的第二个命令行所示:

system% cat> tmp/mystreams 
ttcompat
ldterm
u8lat1
ptem
^D
system% strchg -f /tmp/mystreams

确保在使用 strchg(1) 时您是超级用户或此设备的属主。要查看当前配置,请使用 strconf(1),如下所示:

system% strconf
ttcompat
ldterm
u8lat1
ptem
pts
system%

要复位原始配置,请按下列方式设置 STREAMS 配置:

system% cat> /tmp/orgstreams
ttcompat
ldterm
ptem
^D
system% strchg -f /tmp/orgstreams

将设置保存在 ~/.cshrc

假定必要的 STREAMS 模块已装入到内核中,您可以将下列各行保存在 .cshrc 文件(C shell 示例)中以便于使用:

setenv LANG en_US.UTF-8
if ($?USER != 0 && $?prompt != 0) then
     cat>! /tmp/mystreams$$ << _EOF
     ttcompat
     ldtterm
     u8lat1
     ptem
_EOF
     /bin/strchg -f /tmp/mystreams$$
     /bin/rm -f /tmp/mystreams$$
     /bin/stty cs8 -istrip defeucw
endif

.cshrc 文件中有了这几行后,您就不必在每次使用 STREAMS 模块时都要键入所有这些命令了。请注意,第二个 _EOF 应从该文件的第一列开始。