AIX中有关语言的环境变量比较多456789.docx_第1页
AIX中有关语言的环境变量比较多456789.docx_第2页
AIX中有关语言的环境变量比较多456789.docx_第3页
AIX中有关语言的环境变量比较多456789.docx_第4页
AIX中有关语言的环境变量比较多456789.docx_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AIX中有关语言的环境变量比较多,本文做了明确的描述本地语言支持(NLS)使用多种环境变量来影响对语言环境的选择。可以设置这些变量的值来更改语言环境信息的搜索路径。LANG指定安装时缺省的语言环境。注:LANG 环境变量值是在安装时确定的。(除非设置了 LC_* 环境变量,否则每个进程都使用都使用该语言环境)。可以使用 SMIT 中的 Manage Language Environment 菜单来更改 LANG 语言环境。有关使用 SMIT 的更多信息,请参阅 AIX 5L Version 5.2 System Management Concepts: Operating System and Devices 中的 System Management Interface Tool (SMIT) Overview。C 和 POSIX 语言环境的目的就是提供最佳性能。LC_ALL覆盖 LANG 环境变量的值以及所有其它 LC_* 环境变量的值。 LC_COLLATE 指定用于 LC_COLLATE 类别信息的语言环境。LC_COLLATE 类别确定了字符整序和字符串整序的规则,这些规则控制着范围、同等类以及多字符整序元素的行为。 LC_CTYPE 指定用于 LC_CTYPE 类别信息的语言环境。LC_CTYPE 类别确定了字符处理的规则,这些规则控制着文本数据字符(即单字节和多字节字符)的字节序列的解释、字符的分类(如,字母、数字等)以及字符类的行为。 LC_FASTMSG 当 LC_FASTMSG 设为 true 时,该变量规定对于 C 和 POSIX 语言环境使用缺省消息,并且规定忽略 NLSPATH。否则,执行符合 POSIX 规范的消息处理。在 /etc/environment 文件中,缺省值为 LC_FASTMSG=true。 LC_MESSAGES指定用于 LC_MESSAGES 类别信息的语言环境。LC_MESSAGES 类别确定了控制肯定性和否定性响应的规则,以及控制用于消息和菜单的语言环境(语言)的规则。 在使用不能显示多字节字符的终端时,如果希望不显示不可打印字符,可将 LC_MESSAGES 环境变量设为 Clft。可显示多字节字符的登录会话禁用此设置。使用 cron 或 inittab 启动的进程保留 Clft LC_MESSAGES 设置,并使用 setlocale() 子例程建立缺省消息的语言环境。如果应用程序不显示消息,请确保 LC_MESSAGES=Clft,并通过 putenv(LC_MESSAGES=) 子例程禁用此设置。其结果就是使用经翻译的消息目录的输出。LC_MONETARY指定用于 LC_MONETARY 类别信息的语言环境。LC_MONETARY 类别确定了控制货币相关格式的规则。 LC_NUMERIC 指定用于 LC_NUMERIC 类别信息的语言环境。LC_NUMERIC 类别确定了控制非货币数字格式的规则。 LC_TIME指定用于 LC_TIME 类别信息的语言环境。LC_TIME 类别确定了控制日期和时间格式的规则。 LOCPATH指定用于本地化信息的搜索路径,包括二进制语言环境文件、输入法和代码集转换器。 注:所有的 setuid 和 setgid 程序都忽略 LOCPATH 环境变量。NLSPATH 指定用于查找消息目录文件的搜索路径。NLS 子系统的消息工具组件使用该环境变量。请参阅 catopen 子例程以获取更多有关 NLSPATH 变量所要求的格式的信息。 影响语言环境选择的环境变量可分为三种优先级类:高、中和低。处于高优先级类的环境变量有:LC_ALL LC_COLLATE LC_CTYPE处于中优先级类的环境变量有:LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME而处于低优先级类的环境变量是:LANG当 setlocale 子例程为一个特定类别或所有类别请求语言环境时,将按以下方式,根据这些环境变量设置的优先级级别对这些设置进行查询:如果设置了 LC_ALL 环境变量,则所有六个类别都使用该变量指定的环境变量。例如,如果 LC_ALL 环境变量等于 en_US,而 LANG 环境变量等于 fr_FR,调用 setlocale 子例程会把所有六个类别都设为 en_US 语言环境。 如果 LC_ALL 环境变量未设,则各个类别分别使用由各自对应的环境变量指定的语言环境。例如,如果 LC_ALL 环境变量未设,LC_COLLATE 环境变量设为 de_DE,而 LC_TIME 环境变量设为 fr_CA,那么调用 setlocale 子例程将把 LC_COLLATE 类别设为 de_DE,而把 LC_TIME 类别设为 fr_CA。这两个环境变量中的任一方都不会优先于另一方。 如果 LC_ALL 环境变量未设,并且某一个特定的 LC_* 环境变量的值也未设,那么 LANG 环境变量的值就决定了这一特定类别的设置。例如,如果 LC_ALL 环境变量未设,LC_CTYPE 环境变量设为 en_US,LC_NUMERIC 环境变量未设,LANG 环境变量设为 is_IS,那么调用 setlocale 子例程会将 LC_CTYPE 类别设为 en_US,而将 LC_NUMERIC 类别设为 is_IS。LANG 语言环境只为那些先前未由 LC_*? 环境变量确定的类别指定语言环境。 如果 LC_ALL 环境变量未设,某一个特定的 LC_* 环境变量的值也未设,而且 LANG 环境变量的值也同样未设置,那么该特定类别的环境变量缺省为 C 语言环境。例如,如果 LC_ALL 环境变量未设,LC_MONETARY 环境变量设为 sv_SE,LC_TIME 环境变量未设,LANG 环境变量也未设,那么调用 setlocale 子例程会将 LC_MONETARY 类别设为 sv_SE,而将 LC_TIME 类别设为 C。环境变量优先顺序示例下表显示这些环境变量的当前设置,以及调用 setlocale(LC_ALL,) 的效果。最后一列指出了调用 setlocale(LC_ALL,) 之后的语言环境设置。环境变量和类别名 环境变量值 调用 setlocale(LC_ALL,) 后的类别值LC_COLLATEde_DEde_DELC_CTYPEde_DEde_DELC_MONETARYen_USen_USLC_NUMERIC(未设)da_DKLC_TIME(未设)da_DKLC_MESSAGES(未设)da_DKLC_ALL(未设)(not applicable)LANGda_DK(不适用)本地语言支持(NLS)使用多种环境变量来影响对语言环境的选择。可以设置这些变量的值来更改语言环境信息的搜索路径。LANG指定安装时缺省的语言环境。注:LANG 环境变量值是在安装时确定的。(除非设置了 LC_* 环境变量,否则每个进程都使用都使用该语言环境)。可以使用 SMIT 中的 Manage Language Environment 菜单来更改 LANG 语言环境。有关使用 SMIT 的更多信息,请参阅 AIX 5L Version 5.2 System Management Concepts: Operating System and Devices 中的 System Management Interface Tool (SMIT) Overview。C 和 POSIX 语言环境的目的就是提供最佳性能。LC_ALL覆盖 LANG 环境变量的值以及所有其它 LC_* 环境变量的值。 LC_COLLATE 指定用于 LC_COLLATE 类别信息的语言环境。LC_COLLATE 类别确定了字符整序和字符串整序的规则,这些规则控制着范围、同等类以及多字符整序元素的行为。 LC_CTYPE 指定用于 LC_CTYPE 类别信息的语言环境。LC_CTYPE 类别确定了字符处理的规则,这些规则控制着文本数据字符(即单字节和多字节字符)的字节序列的解释、字符的分类(如,字母、数字等)以及字符类的行为。 LC_FASTMSG 当 LC_FASTMSG 设为 true 时,该变量规定对于 C 和 POSIX 语言环境使用缺省消息,并且规定忽略 NLSPATH。否则,执行符合 POSIX 规范的消息处理。在 /etc/environment 文件中,缺省值为 LC_FASTMSG=true。 LC_MESSAGES指定用于 LC_MESSAGES 类别信息的语言环境。LC_MESSAGES 类别确定了控制肯定性和否定性响应的规则,以及控制用于消息和菜单的语言环境(语言)的规则。 在使用不能显示多字节字符的终端时,如果希望不显示不可打印字符,可将 LC_MESSAGES 环境变量设为 Clft。可显示多字节字符的登录会话禁用此设置。使用 cron 或 inittab 启动的进程保留 Clft LC_MESSAGES 设置,并使用 setlocale() 子例程建立缺省消息的语言环境。如果应用程序不显示消息,请确保 LC_MESSAGES=Clft,并通过 putenv(LC_MESSAGES=) 子例程禁用此设置。其结果就是使用经翻译的消息目录的输出。LC_MONETARY指定用于 LC_MONETARY 类别信息的语言环境。LC_MONETARY 类别确定了控制货币相关格式的规则。 LC_NUMERIC 指定用于 LC_NUMERIC 类别信息的语言环境。LC_NUMERIC 类别确定了控制非货币数字格式的规则。 LC_TIME指定用于 LC_TIME 类别信息的语言环境。LC_TIME 类别确定了控制日期和时间格式的规则。 LOCPATH指定用于本地化信息的搜索路径,包括二进制语言环境文件、输入法和代码集转换器。 注:所有的 setuid 和 setgid 程序都忽略 LOCPATH 环境变量。NLSPATH 指定用于查找消息目录文件的搜索路径。NLS 子系统的消息工具组件使用该环境变量。请参阅 catopen 子例程以获取更多有关 NLSPATH 变量所要求的格式的信息。 影响语言环境选择的环境变量可分为三种优先级类:高、中和低。处于高优先级类的环境变量有:LC_ALL LC_COLLATE LC_CTYPE处于中优先级类的环境变量有:LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME而处于低优先级类的环境变量是:LANG当 setlocale 子例程为一个特定类别或所有类别请求语言环境时,将按以下方式,根据这些环境变量设置的优先级级别对这些设置进行查询:如果设置了 LC_ALL 环境变量,则所有六个类别都使用该变量指定的环境变量。例如,如果 LC_ALL 环境变量等于 en_US,而 LANG 环境变量等于 fr_FR,调用 setlocale 子例程会把所有六个类别都设为 en_US 语言环境。 如果 LC_ALL 环境变量未设,则各个类别分别使用由各自对应的环境变量指定的语言环境。例如,如果 LC_ALL 环境变量未设,LC_COLLATE 环境变量设为 de_DE,而 LC_TIME 环境变量设为 fr_CA,那么调用 setlocale 子例程将把 LC_COLLATE 类别设为 de_DE,而把 LC_TIME 类别设为 fr_CA。这两个环境变量中的任一方都不会优先于另一方。 如果 LC_ALL 环境变量未设,并且某一个特定的 LC_* 环境变量的值也未设,那么 LANG 环境变量的值就决定了这一特定类别的设置。例如,如果 LC_ALL 环境变量未设,LC_CTYPE 环境变量设为 en_US,LC_NUMERIC 环境变量未设,LANG 环境变量设为 is_IS,那么调用 setlocale 子例程会将 LC_CTYPE 类别设为 en_US,而将 LC_NUMERIC 类别设为 is_IS。LANG 语言环境只为那些先前未由 LC_*? 环境变量确定的类别指定语言环境。 如果 LC_ALL 环境变量未设,某一个特定的 LC_* 环境变量的值也未设,而且 LANG 环境变量的值也同样未设置,那么该特定类别的环境变量缺省为 C 语言环境。例如,如果 LC_ALL 环境变量未设,LC_MONETARY 环境变量设为 sv_SE,LC_TIME 环境变量未设,LANG 环境变量也未设,那么调用 setlocale 子例程会将 LC_MONETARY 类别设为 sv_SE,而将 LC_TIME 类别设为 C。环境变量优先顺序示例下表显示这些环境变量的当前设置,以及调用 setlocale(LC_ALL,) 的效果。最后一列指出了调用 setlocale(LC_ALL,) 之后的语言环境设置语言环境和执行速度的问题本地语言支持(NLS)使应用不同语言环境的操作系统变得十分便利。因为广泛应用 NLS 对于从系统获取最优性能变得越来越重要,因此本附录包含了一个对于 NLS 的简短回顾。NLS 允许操作系统定制为适合个别用户语言和文化期望。一个语言环境是语言和地理或者文化需求的特定组合,它由一个复合名称来标识,例如 en_US(美国英语)。对于每个受支持的语言环境,它们有一套消息编目、校勘值表和其它定义该语言环境的要求的信息。当安装了操作系统以后,系统管理器可选择应安装哪个语言环境。然后,各用户可以通过更改 LANG 和 LC_ALL 变量来控制每个 shell 的语言环境。不符合上述结构的一个语言环境是 C(或 POSIX)语言环境。除非用户明确地选择另一个环境,否则 C 语言环境是系统缺省语言环境。每个新派生的进程也是再此语言环境中开始的。运行 C 语言环境最接近于操作系统在 UNIX 的原始的单语言格式中运行。没有 C 消息编目。相反,尝试从编目中获取消息的程序返回已编译进程序的默认消息。一些命令,如 sort 还原至它们原始的特定于字符集的算法。NLS 的性能通常分为三个区域。C 语言环境对于执行命令通常是最快的,接下来是单字节(拉丁字母)语言环境,如 en_US,而多字节语言环境执行命令最慢。编程注意事项历史上,C 预言已经在单词字节和字符可换性使用方面显示了一定的粗陋性。这样 char foo10 说明的数组是一个 10 字节的数组。但不是世界上所有的语言可以用单个字节的字符来表示。例如,日语和汉语需要两个或更多的字节来确定一个要显示的特定的图形。因而,我们要区别一个 8 位数据的字节和需要用大量信息来表示单个图形的字符。每个语言环境都有两个特征,即在该语言环境中表示字符所需的最大数量的字节以及单个字符可占据的最大数量的输出显示位置。这些值可以用 MB_CUR_MAX 和 MAX_DISP_WIDTH 宏获取。如果两个值都为 1 ,则该语言环境中依旧保留字节和字符等价。如果其中有一个值大于 1 ,则执行字符接字符进程的程序或跟踪已使用显示位置数的各程序必须使用国际化的函数来这样做。因为每个字符的多字节编码由包含不同数量的字节构成,所以它们不可作为字符数组来处理。要在每个字符都需要深度处理的仿真环境中实现有效编码,已定义了一种固定字节宽度的数据类型 wchar_t。wchar_t 很宽,足够用来容纳任何受支持字符编码的翻译的格式。因而编程器可以声明 wchar_t 数组,并它们已在 char 数组上使用(几乎)相同的逻辑处理它们,使用传统函数 libc.a 的宽字符模拟。遗憾的是,从在其中输入文本的多字节格式转化为(存储于磁盘或写至显示器)wchar_t 格式是在计算上是非常昂贵的。它只能在 wchar_t 格式的处理效率将高于装化为或从 wchar_t 格式转化的代价的环境中执行。一些简单的规则如果程序员未注意到多字节字符集设计的一些限制(这些限制允许许多程序在多字节语言环境中高效运行而几乎不用国际化函数)则可能编写出缓慢、多语言应用程序。例如: 在 IBM 支持的所有代码集中,字符代码 0x00 到 0x3F 是唯一的,并对 ASCII 标准字符进行编码。唯一是指这些位组合不会作为多字节字符的字节之一字节出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论