国际语言环境指南

第 5 章 UTF-8 语言环境支持概述

本部分描述以下内容:

Unicode 概述

Unicode 标准是用于表示文本以供计算机进行处理的通用字符编码标准。 它与国际标准 ISO/IEC 10646-1:2000 和 ISO/IEC 10646–2:2001 完全兼容,并包含与 ISO/IEC 10646 相同的全部字符和编码点。Unicode 标准提供有关各字符及其用法的附加信息。符合 Unicode 的所有执行程序也同时符合 ISO/IEC 10646。

Unicode 标准提供了一种对多语种纯文本进行一致编码的方法,便于国际文本文件的交换。处理多语种文本的计算机用户 、商务人员、语言学家、研究人员、科学家等会发现 Unicode 标准可大大简化他们的工作。Unicode 标准对于经常使用数学符号和其它技术字符的数学家和技术人员也很有价值。

Unicode 能支持的最大可能代码数据点数是 1,114,112,位于 17 个 16 位平面中。每一个平面都可支持 65,536 个不同的代码数据点。

在 Unicode 可支持的一百多万个代码数据点中,3.1 版目前定义了 94,140 个字符,它们位于平面 0、1、2 和 14 中。 平面 15 和 16 供个人使用,也称为用户定义的字符。平面 15 和 16 总共可支持 131,068 个用户定义的字符。

Unicode 可使用下列任何一种字符编码方案来编码:

UTF-8 是 Unicode 的一种可变长度编码形式,它透明地保留了 ASCII 字符代码值。该形式在 Solaris Unicode 语言环境中用作文件代码。

UTF-16 是 Unicode 的一种 16 位编码形式。在 UTF-16 中,多达 65,535 个字符被编码为单个 16 位值。映射在 65,535 到 1,114,111 的字符被编码为成对的 16 位值(代理)。

UTF-32 是 Unicode 的一种固定长度的 21 位编码形式,通常用在 32 位容器或数据类型中。该形式在 Solaris Unicode 语言环境中用作进程代码(宽字符代码)。

有关 Unicode 标准和 ISO/IEC 10646 及其各种表示形式的详细信息,请参考:

Unicode 语言环境:en_US.UTF-8 支持概述

Unicode/UTF-8 语言环境支持 Unicode 3.1。 en_US.UTF-8 语言环境通过将 UTF-8 用作其代码集提供多脚本处理支持。该语言环境处理多种语言中的输入和输出文本,是 Solaris 操作环境中第一个具有此功能的语言环境。其它 UTF-8 语言环境的功能类似于 en_us.UTF-8 的功能; 后面对 en_US.UTF-8 的探讨同样适用于这些语言环境。


注意:

UTF-8 是由 X/Open-Uniforum Joint Internationalization Working Group (XoJIG) 在 1992 年制定的 Unicode / ISO/IEC 10646-1 的文件系统安全通用字符集转换格式,并在 1996 年作为 ISO/IEC 10646-1:1993 的第二修正案被 ISO 和 IEC 批准。该标准已由 Unicode Consortium、国际标准化组织和国际电工技术委员会采用而成为 Unicode 2.0 和 ISO/IEC 10646-1 的一部分。


Solaris 中的 Unicode 语言环境支持对在 Unicode 3.1 与 ISO/IEC 10646-1 和 10646-2 中定义的每一个代码数据点值的处理。 所支持的语言不仅包括全欧洲语言和亚洲语言,还包括一些复杂的文本布局语言,如阿拉伯语、希伯来语、印地文和泰语。由于字体资源有限,Solaris 9 软件仅包括来自下列字符集的字符字型:

如果您试图查看 en_US.UTF-8 语言环境中没有其相应字型的字符,则该语言环境将显示“no-glyph”字型,如下所示:

Graphic

语言环境可以在安装时选择,并可指定为系统的缺省语言环境。

对于 64 位和 32 位的 Solaris 系统,提供了同一级别的 en_US.UTF-8 语言环境支持。


注意:

Motif 和 CDE 桌面应用程序和库支持 en_US.UTF-8 语言环境。但 XView™ 和 OLIT 库 支持 en_US.UTF-8 语言环境。


桌面输入法

CDE 提供使用 Xm Toolkit 为国际化的应用程序输入本地化输入的能力。启用了 XmText[Field] 小部件以便与各个语言环境中的输入法相连接。输入法被国际化,因为某些语言环境以从右向左、从上到下等方向写入它们的文本。在同一个应用程序中,您可以使用应用多种字体的不同输入法。

预编辑区显示正被预编辑的字符串。这可以通过四种方式来完成:

在 OffTheSpot 模式下,此位置在状态区右边主窗口的正下方。在 OverTheSpot 模式下,预编辑区位于光标位置处。在 Root 模式下,预编辑区和状态区与客户程序窗口分离。

有关详细信息,请参考 VendorShell(3X) 手册页上的 XmNpreeditType 资源描述。


注意:

在 Solaris 9 环境中,对简体/繁体中文、日语和朝鲜语可采用本地亚洲语言输入法。这些方法是对 Unicode 语言环境的当前多脚本输入法的补充。


下面的讨论包括对所选的输入法、如何使用这些输入法以及如何在这些方法之间切换的描述。

语言选择和输入模式

Solaris Unicode 语言环境支持多种语言。每个 Unicode 语言环境共有 14 种输入模式:

访问输入法

您可以使用书写键组合或输入模式选择窗口来切换到某个特定的输入模式。要访问输入模式选择窗口,请在应用程序窗口左下角的状态区中按下鼠标按钮 1。输入模式选择窗口显示在下图中。

图形 5–1 输入模式选择窗口

Graphic

输入模式切换键序列

您可以使用 表 5–1 中列出的键序列将当前输入模式更改为新的输入模式。 使用这些键序列的唯一限制是,如果您当前正使用某个亚洲语言输入模式,则需要同时按下 Control 键和空格键切换回英语/欧洲语言输入模式。一旦处于英语/欧洲语言输入模式,您就可以使用这些键序列随意切换到其它任何一种输入模式中。

下列键序列显示如何从英语/欧洲语言输入模式切换到西里尔文输入模式:

表 5–1 输入模式切换键序列

键序列 

输入模式 

Control + Spacebar

英语/欧洲语言 

Compose c c

西里尔文  

Compose g g

希腊文  

Compose a r

阿拉伯文  

Compose h h

希伯来文  

Compose t t

泰文  

Compose h i

印地文 

Compose j a

日语 

Compose k o

朝鲜语 

Compose s c

简体中文  

Compose t c

繁体中文  

Compose h k

繁体中文(香港特别行政区)  

Compose u o

Unicode 八进制代码输入法 

Compose u h

Unicode 十六进制代码输入法 

Compose l l

查表输入法  

英语/欧洲语言输入模式

英语/欧洲语言输入模式包括英语字母和带有变音标记的字符(例如 á、è、î、õ 和 ü)以及欧洲语言中的一些字符(如 ¡, §, ¿)。

该输入模式是所有应用程序的缺省模式。 输入模式显示在 GUI 应用程序窗口的左下角。

要插入带有变音标记的字符或 Latin-1、Latin-2、Latin-4、Latin-5 和 Latin-9 中的特殊字符,必须键入一个书写键序列,如下例所述。

要显示 Ä 字符:

要显示 ¿, 字符:

如果键盘上没有书写键,您可以模仿书写键的操作,方法是同时按下 Control 键和 Shift 键。

要从该语言环境中输入欧元货币符号(Unicode 值为 U+20AC),则可以使用下列任何一个输入序列:

对于这些输入序列,您可以同时按下这两个键。如果键盘上没有 AltGraph 键,则您可以用 Alt 键来替代。

下面各表显示 Solaris 环境中最常用的 Latin-1、Latin-2、Latin-3、Latin-4、Latin-5 和 Latin-9 语言输入的书写键。

下表列出常用的 Latin-1 书写键序列。

表 5–2 常用的 Latin-1 书写键序列

按下 Compose,然后按下并释放

然后按下并释放 

结果  

spacebar

spacebar

无间断间隔 

s

1

上标 1 

s

2

上标 2 

s

3

上标 3  

!

!

竖翻叹号  

x

o

货币符号 ¤ 

p

!

段落符号 ¶ 

/

u

mu u 

'

"

锐音符 ´ 

,

,(逗号)

下加符 Ç 

"

"

分音符 ¨ 

-

^

长音符 ¯ 

o

o

度 ° 

x

x

乘号 x 

+

-

正负号 ± 

-

-

软连字符 – 

-

:

除号 ÷ 

-

a

序号(阴性)ª 

-

o

序号(阳性)º 

-

,(逗号)

非标记 ¬ 

.

.

中间点 · 

1

2

普通分数 ½ 

1

4

普通分数 ¼ 

3

4

普通分数 ¾ 

<

<

左双尖引号 «  

>

>

右双尖引号 »  

?

?

竖翻问号 ¿ 

A

`(反引号)

带抑音符的 A À 

A

'(单引号)

带锐音符的 A Á 

A

*

带上圆圈的 A Å 

A

"

带分音符的 A Ä 

A

^

带扬抑符的 A  

A

~

带波浪号的 A à

A

E

双元音 AE Æ 

C

,(逗号)

带下加符的 C Ç 

C

o

版权所有标记 © 

D

-

大写 eth ð 

E

`(反引号)

带抑音符的 E È 

E

'

带锐音符的 E É 

E

"

带分音符的 E Ë 

E

^

带扬抑符的 E Ê 

I

`(反引号)

带抑音符的 I Ì 

I

'

带锐音符的 I Í 

I

"

带分音符的 I Ï 

I

^

带扬抑符的 I Π

L

-

英镑标记 £ 

N

~

带波浪号的 N Ñ 

O

`(反引号)

带抑音符的 O Ò 

O

'

带锐音符的 O Ó 

O

/

带斜杠的 O Ø 

O

"

带分音符的 O Ö 

O

^

带扬抑符的 O Ô 

O

~

带波浪号的 O Õ 

R

O

注册商标标记 ® 

T

H

拉丁文字母 Thorn þ 

U

`(反引号)

带抑音符的 U Ù 

U

'

带锐音符的 U Ú 

U

"

带分音符的 U Ü 

U

^

带扬抑符的 U Û 

Y

'

带锐音符的 Y ý 

Y

-

日元标记 ¥ 

a

`(反引号)

带抑音符的 a à 

a

'

带锐音符的 a á 

a

*

带上圆圈的 a å 

a

"

带分音符的 a ä 

a

~

带波浪号的 a ã 

a

^

带扬抑符的 a â 

a

e

双元音 ae æ 

c

,(逗号)

带下加符的 c ç 

c

/

百分号 ¢ 

c

o

版权所有标记 ©  

d

-

eth ð 

e

`(反引号)

带抑音符的 e è 

e

'

带锐音符的 e é 

e

"

带分音符的 e ë 

e

^

带扬抑符的 e ê 

i

`(反引号)

带抑音符的 i ì 

i

'

带锐音符的 i í 

i

"

带分音符的 i ï 

i

^

带扬抑符的 i î 

n

~

带波浪号的 n ñ 

o

`(反引号)

带抑音符的 o ò 

o

'

带锐音符的 o ó 

o

/

带斜杠的 o ø 

o

"

带分音符的 o ö 

o

^

带扬抑符的 o ô 

o

~

带波浪号的 o õ 

s

s

德语双 s ß,也称为清音 S 

t

h

拉丁文字母 Thorn þ 

u  

`(反引号)

带抑音符的 u ù 

u

'

带锐音符的 u ú 

u

"

带分音符的 u ü 

u

^

带扬抑符的 u û 

y

'

带锐音符的 y y 

y

"

带分音符的 y ÿ 

|

|

间断条 ¦

下表列出通用的 Latin-2 和 Latin-4 书写键序列。

表 5–3 通用的 Latin-2 书写键序列

按下 Compose,然后按下并释放

按下并释放 

结果  

a

spacebar

ogonek 

u

spacebar

短音符 

v

spacebar

抑扬符  

"

spacebar

双锐音符 

A

a

A Ogonek 

A

u

带短音符的 A 

C

'

带锐音符的 C 

C

v

带抑扬符的 C 

D

v

带抑扬符的 D 

-

D

带斜线的 D 

E

v

带抑扬符的 E 

E

a

E Ogonek 

L

'

带锐音符的 L 

L

-

带斜线的 L 

L

>

带抑扬符的 L 

N

'

带锐音符的 N 

N

v

带抑扬符的 N 

O

>

带双锐音符的 O 

S

'

带锐音符的 S 

S

v

带抑扬符的 S 

S

,

带下加符的 S 

R

'

带锐音符的 R 

R

v

带抑扬符的 R 

T

v

带抑扬符的 T 

T

,

带下加符的 T 

U

*

带上圆圈的 U 

U

>

带双锐音符的 U 

Z

'

带锐音符的 Z 

Z

v

带抑扬符的 Z 

Z

.

带上点的 Z 

k

k

拉丁文字母 kra 

A

_

带长音符的 A 

E

_

带长音符的 E 

E

.

带上点的 E 

G

,

带下加符的 G 

I

_

带长音符的 I 

I

~

带波浪号的 I 

I

a

I Ogonek 

K

,

带下加符的 K 

L

,

带下加符的 L 

N

,

带下加符的 N 

O

_

带长音符的 O 

R

,

带下加符的 R 

T

|

带斜线的 T 

U

~

带波浪号的 U 

U

a

U Ogonek 

U

_

带长音符的 U 

N

N

拉丁文字母 Eng 

a

_

带长音符的 a 

e

_

带长音符的 e 

e

.

带上点的 e  

g

,

带下加符的 g 

i

_

带长音符的 i 

i

~

带波浪号的 i 

i

a

i Ogonek 

k

,

带下加符的 k 

l

,

带下加符的 l 

n

,

带下加符的 n 

o

_

带长音符的 o 

r

,

带下加符的 r 

t

|

带斜线的 t 

u

~

带波浪号的 u 

u

a

u Ogonek 

u

_

带长音符的 u 

n

n

拉丁文字母 Eng

   

下表列出通用的 Latin-3 书写键序列。

表 5–4 通用的 Latin-3 书写键序列

按下 Compose,然后按下并释放

按下并释放 

结果 

C

>

带扬抑符的 C 

C

.

带上点的 C 

G

>

带扬抑符的 G 

G

.

带上点的 G 

H

>

带扬抑符的 H 

J

>

带扬抑符的 j 

S

>

带扬抑符的 S 

U

u

带短音符的 U 

c

>

带扬抑符的 c 

c

.

带上点的 c 

g

>

带扬抑符的 g 

g

.

带上点的 g 

h

>

带扬抑符的 h 

j

>

带扬抑符的 j  

s

>

带扬抑符的 s 

u

u

带短音符的 u 

下表列出通用的 Latin-5 书写键序列。

表 5–5 通用的 Latin-5 书写键序列

按下 Compose,然后按下并释放

按下并释放 

结果  

G

u

带短音符的 G 

I

.

带上点的 I 

g

u

带短音符的 g 

i

.

无点的 i

下表列出通用的 Latin-9 书写键序列。

表 5–6 通用的 Latin-9 书写键序列

按下 Compose,然后按下并释放

按下并释放 

结果 

o

e

连字 oe 

O

E

连字 OE 

Y

"

带分音符的 Y 

阿拉伯文输入模式

要切换到阿拉伯文输入模式,请键入 Compose a r,或者请从输入模式选择窗口中选择阿拉伯文。有关访问输入模式选择窗口的信息,请参见 图形 5–1

下图显示阿拉伯文键盘布局。

图形 5–2 阿拉伯文键盘

Graphic

西里尔文输入模式

要切换到西里尔文输入模式,请按下 Compose c c ,或者请从输入模式选择窗口中选择西里尔文。 有关访问输入模式选择窗口的信息,请参见 图形 5–1

下图显示西里尔文(俄文)键盘布局。

图形 5–3 西里尔文(俄文)键盘

Graphic

在切换到西里尔文输入模式后,您不能输入英语或欧洲语言文本。要切换回英语/欧洲语言输入模式,请同时键入 Controlspacebar,或者通过单击状态区从输入模式选择窗口中选择英语/欧洲语言输入模式。请参见 图形 5–1

您也可以通过键入相应的输入模式切换键序列切换到其它输入模式中。

希腊文输入模式

要切换到希腊文输入模式,请按下 Compose g g,或者从输入模式选择窗口中选择希腊文。有关访问输入模式选择窗口的信息,请参见图形 5–1

在切换到希腊文输入模式后,您不能输入英语或欧洲语言文本。要切换回英语/欧洲语言输入模式,请同时键入 Controlspacebar,或者通过单击状态区从输入模式选择窗口中选择英语/欧洲语言输入模式。下图显示希腊文欧元键盘布局。

图形 5–4 希腊文欧元键盘

Graphic

下图显示希腊文 UNIX 键盘。

图形 5–5 希腊文 UNIX 键盘

Graphic

希伯来文输入模式

要切换到希伯来文输入模式,请按下 Compose h h ,或者从输入模式选择窗口中选择希伯来文。 有关访问输入模式选择窗口的信息,请参见图形 5–1.

下图显示希伯来文键盘布局。

图形 5–6 希伯来文键盘

Graphic

印地文输入模式

要切换到印地文输入模式,请按下 Compose h i,或者从输入模式选择窗口中选择印地文。有关访问输入模式选择窗口的详细信息,请参见 图形 5–1。要切换回英语/欧洲语言输入模式,请同时键入 Controlspacebar,或者通过单击状态区从输入模式选择窗口中选择英语/欧洲语言输入模式。

图形 5–7 印地文键盘

Graphic

下图显示印地文 Shift 键盘。

图形 5–8 印地文 Shift 键盘

Graphic

日语输入模式

要切换到日语输入模式,请按下 Compose j a ,或者从输入模式选择窗口中选择日语。有关访问输入模式选择窗口的信息,请参见图形 5–1

要使用本地日语输入系统,需要安装一个或多个日语语言环境,然后重新引导系统。安装了日语语言环境后,您可以在所有 UTF-8 语言环境中使用 ATOK12。 Wnn6 在 UTF-8 语言环境中不可用(ja_JP.UTF-8 除外)。

图形 5–9 日语键盘

Graphic

朝鲜语输入模式

要切换到朝鲜语输入模式,请按下 Compose k o,或者从输入模式选择窗口中选择朝鲜语。有关访问输入模式选择窗口的信息,请参见 图形 5–1

要拥有本地朝鲜语输入系统,需要在系统上安装一个或多个朝鲜语语言环境。一旦安装了朝鲜语语言环境,您就可以使用本地朝鲜语输入系统了。有关如何使用朝鲜语输入系统的详细信息,请参考《Korean Solaris User's Guide》。

图形 5–10 朝鲜语键盘

Graphic

简体中文输入模式

要切换到简体中文输入模式,请按下 Compose s c,或者从输入模式选择窗口中选择简体中文。有关访问输入模式选择窗口的信息,请参见图形 5–1

要使用本地简体中文输入系统,需要在系统上安装一个或多个简体中文语言环境。有关如何使用简体中文输入系统的详细信息,请参考《简体中文 Solaris 用户指南》。

泰语输入模式

要切换到泰语输入模式,请按下 Compose t t,或者从输入模式选择窗口中选择泰语。有关访问输入模式选择窗口的详细信息,请参见 图形 5–1

要切换回英语/欧洲语言输入模式,请同时键入 Controlspacebar,或者通过单击状态区从输入模式选择窗口中选择英语/欧洲语言输入模式。

下图显示泰语键盘布局。

图形 5–11 泰语键盘

Graphic

繁体中文输入模式

要切换到繁体中文输入模式,请按下 Compose t c,或者从输入模式选择窗口中选择繁体中文。有关访问输入模式选择窗口的信息,请参见 图形 5–1

要访问本地繁体中文输入系统,需要在系统上安装一个或多个繁体中文语言环境。有关如何使用繁体中文输入系统的详细信息,请参考《Traditional Chinese Solaris User's Guide》。

繁体中文(中国香港特别行政区)输入模式

要切换到繁体中文输入模式,请按下 Compose h k,或者从输入模式选择窗口中选择繁体中文(中国香港特别行政区)。有关访问输入模式选择窗口的信息,请参见 图形 5–1

要访问本地繁体中文(中国香港特别行政区)输入系统,需要在系统上安装一个或多个繁体中文(中国香港特别行政区)语言环境。

Unicode 十六进制输入模式

要切换到 Unicode 十六进制代码输入法输入模式,请按下 Compose u h,或者从输入模式选择窗口中选择 Unicode 十六进制。要切换到八进制数字系统,请按下 Compose u o 或者选择 Unicode 八进制。有关访问输入模式选择窗口的信息,请参见图形 5–1

要使用这些输入模式,您需要了解字符的十六进制或八进制代码数据点值。有关代码数据点值和字符之间的映射的信息,请参考《Unicode 标准 3.0 版》。

如果您正处于 Unicode 十六进制代码输入模式,则要输入一个字符,需要键入四位十六进制数字。以下是一些十六进制值样例:

您可以使用 A、B、C、D、E 和 F 的大写和小写字母形式来表示十六进制数字。如果您首选使用八进制数字系统而不是十六进制数字,则可以输入八进制数字 0 到 7。 如果一位或两位数字键入错误,则可以使用 DeleteBackspace 键删除这些数字。

查表输入模式

要切换到查表输入模式,请按下 Compose l l,或者从输入模式选择窗口中选择查找。有关访问输入模式选择窗口的信息,请参见图形 5–1

第二个查找窗口显示仅限于成组显示的候选项,一次最多显示 80 个候选项。按下 Control n 转到下一组候选项,或者按下 Control p 转到上一组候选项。

系统环境

本部分描述语言环境环境变量、TTY 环境设置、32 位和 64 位 STREAMS 模块以及终端支持。

语言环境环境变量

确保您的系统已安装了 en_US.UTF-8 语言环境。要检查各种类中的当前语言环境设置,请使用 locale(1) 公用程序。

system% locale 
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=

要使用 en_US.UTF-8 语言环境桌面环境,请首先选择该语言环境。在 TTY 环境中,请首先选择语言环境,方法是将 LANG 环境变量设置为 en_US.UTF-8 ,如下面的 C-shell 示例所示:

system% setenv LANG en_US.UTF-8

确保 LC_ALLLC_COLLATE LC_CTYPELC_MESSAGESLC_NUMERIC LC_MONETARYLC_TIME 种类未设置,或者设置为 en_US.UTF-8。如果设置了这些种类中的任何一个,则它们将覆盖较低优先级的 LANG 环境变量。有关环境变量分层结构的详细信息,请参见 setlocale(3C) 手册页。

您也可以从 CDE 桌面上启动 en_US.UTF-8 环境。在 CDE 登录屏幕的 Options -> Language 菜单上,选择 en_US.UTF-8

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 应从该文件的第一列开始。

代码转换

Unicode 语言环境支持通过 iconv(1)iconv(3C)sdtconvtool(1) 在多个国家/地区的主要代码集之间增加了各种代码转换。

在 Solaris 9 环境下,公用程序 geniconvtbl 可启用用户定义的代码转换。用 geniconvtbl 公用程序创建的用户定义代码转换可以同时用于 iconv(1) 和 iconv(3)。 有关该公用程序的详细信息,请参考 geniconvtbl( 1) geniconvtbl( 4) 手册页。

附录 A,iconv 代码转换 中的表中显示了可应用于iconv(1)、iconv_open (3C) 和 sdtconvtool(1) 的可用 fromcodetocode 名称。 有关 iconv 代码转换的详细信息,请参见 iconv( 1)iconv_open(3C)iconv(3C)iconv_close(3C) geniconvtbl(1) geniconvtbl(4) sdtconvtool(1) 手册页。 有关可用代码转换的详细信息,请参见 iconv_en_US.UTF-8(5)、iconv(5)、iconv_ja (5)、iconv_ko(5)、iconv_zh(5) 和 iconv_zh_TW(5) 手册页。 另见 附录 A,iconv 代码转换


注意:

UCS-2、UCS-4、UTF-16 和 UTF-32 均为 Unicode/ ISO/IEC 10646 表示形式,用于当 Unicode 3.1 和 ISO/IEC 10646-1:2000 标准定义的 Byte Order Mark (BOM) 字符出现在字符流的开头时对这些字符加以识别。其它形式(如 UCS-2BE、UCS-4BE、UTF-16BE 和 UTF-32BE)均为固定宽度的 Unicode/ISO/IEC 10646 表示形式,它们不识别 BOM 字符,并且同样采用大尾数法字节排序。其它表示形式(如 UCS-2LE、UCS-4LE、UTF-16LE 和 UTF-32LE)将采用小尾数法字节排序。它们也不识别 BOM 字符。

有关 ISO8859–* 和 KO18–* 的关联语言 (script) 和语言的信息,请参见 http://czyborra.com/charsets/iso8869.html。


DtMail

由于语言的覆盖范围增加,因此在 en_US.UTF-8 语言环境中运行的 Solaris 9 DtMail 支持下列字符集(按 MIME 名称指示):

这种支持支持用户在一个 DtMail 示例中查看以世界上几乎任何地区的不同字符集编码的任何种类的电子邮件。DtMail 通过查看 MIME 字符集以及随同电子邮件提供的内容传送编码来对收到的电子邮件进行解码。支持 Windows-125x MIME 字符集。

要发送电子邮件,您必须指定一个收件人邮件用户代理(邮件客户)能够理解的 MIME 字符集,也可以使用 en_US.UTF-8 语言环境提供的缺省 MIME 字符集。可以在“新建邮件”窗口中切换外发邮件的字符集,方法是按下 Control Y,或者单击“格式”菜单按钮,然后单击“更改字符集”按钮。下一个可用的字符集名称将显示在“发送”按钮顶部的左下角区域内。

如果您的电子邮件信息标题或信息正文包含无法由指定的 MIME 字符集表示的字符,则系统会自动将字符集切换为可表示任何字符的 UTF-8

如果您的信息仅包含来自 7 位 US-ASCII 字符集的字符,则电子邮件的缺省 MIME 字符集将为 US-ASCII。任何邮件用户代理都可以对这种电子邮件信息进行解码,而不会丢失字符或信息。

如果您的信息包含来自各种语言的字符,则缺省 MIME 字符集将为 UTF-8 UTF-8 中的任何 8 位字符都是用 Quoted-Printable 编码来编码的。有关 MIME、已注册的 MIME 字符集和 Quoted-Printable 编码的详细信息,请参考 RFC 2045、2046、2047、2048、2049、2279、2152、2237、1922、1557、1555 和 1489。

图形 5–12 DtMail 的“新建邮件”窗口

Graphic

程序设计环境

国际化的应用程序应自动启用 en_US.UTF-8 语言环境。但在应用程序的资源文件中需要有正确的 FontSet/XmFontList 定义。

有关国际化应用程序的信息,请参见《创建适用于全世界的软件: Solaris 国际开发者指南》,第 2 版。

用于 X 应用程序的 FontSet

有关用于 X 应用程序的 FontSet 的信息,请参见 Unicode 语言环境:en_US.UTF-8 支持概述

由于 Solaris 9 环境支持 CDE 桌面环境,因此每一种字符集都有一组有保证的字体。

以下是在 Solaris 9 产品中受支持的 Latin-1 字体的列表:

-dt-interface system-medium-r-normal-xxs sans utf-10-100-72-72-p-59-iso8859-1
-dt-interface system-medium-r-normal-xs sans  utf-12-120-72-72-p-71-iso8859-1
-dt-interface system-medium-r-normal-s sans  utf-14-140-72-72-p-82-iso8859-1
-dt-interface system-medium-r-normal-m sans  utf-17-170-72-72-p-97-iso8859-1
-dt-interface system-medium-r-normal-l sans  utf-18-180-72-72-p-106-iso8859-1
-dt-interface system-medium-r-normal-xl sans utf-20-200-72-72-p-114-iso8859-1
-dt-interface system-medium-r-normal-xxl sans utf-24-240-72-72-p-137-iso8859-1

有关 CDE 公共字体别名(包括 -dt-interface user-* -dt-application-* 别名)的信息,请参见《Common Desktop Environment: Internationalization Programmer's Guide》。

en_US.UTF-8 语言环境中,utf 也作为 X 逻辑字体描述名的样式字段中的附加属性包括在该语言环境的公共字体别名中。因此,要有一组正确的字体,在字体集创建过程中就必须包括附加样式,如下例所示:

fs = XCreateFontSet(display,
"-dt-interface system-medium-r-normal-s*utf*",
 &missing_ptr, &missing_count, &def_string);

CDE/Motif 应用程序中的 FontList 定义

与 FontSet 定义一样,应用程序的 XmFontList 资源定义也应包括该语言环境所支持的附加样式属性。

*fontList:\
 -dt-interface system-medium-r-normal-s*utf*: