语言环境定义源文件格式的 LC_COLLATE 类别
用途
定义字符或字符串整理信息。
描述
整理元素是用于进行整理的比较单元。 整理元素可以是一个字符,也可以是一系列字符。 语言环境中的每个整理元素都具有一组权重,这些权重确定整理元素是在语言环境中的其他整理元素之前,等于还是之后进行整理。 在转换语言环境定义源文件时, 本地定义 命令将为每个整理元素分配整理权重。 然后,这些整理权重由比较字符串的应用程序使用。
字符串比较是通过比较字符串中每个字符的整理权重来执行的,直到找到差异或确定字符串相等为止。 如果语言环境定义了多个整理顺序,那么可以多次执行此比较。 例如,在法语语言环境中,将使用整理权重的主集合来比较字符串。 如果它们在此比较的基础上是相等的,那么将使用辅助整理权重集再次进行比较。 整理元素具有与之关联的一组整理权重,该值等于为语言环境定义的整理顺序数。
图表映射 文件中定义的每个字符 (或者可移植字符集中的每个字符 (如果未指定 图表映射 文件)) 本身都是整理元素。 可以使用 整理元素 语句来定义其他整理元素。 语法是:
整理元素 字符符号 从 串
LC_COLLATE 类别以 LC_COLLATE 关键字开头,并以 结束 LC_COLLATE 关键字结尾。
在 LC_COLLATE 类别中可识别以下关键字:
| 项 | 描述 |
|---|---|
| 复制 | 复制 语句指定要用作此类别的定义的现有语言环境的名称。 如果 复制 语句包括在文件中,那么不能指定其他关键字。 |
| 整理元素 | 整理元素 语句指定多字符整理元素。 |
整理元素 语句的语法如下所示:
collating-element <整理符号> from <串>
整理符号 值定义一个整理元素,该元素是由一个或多个字符组成的字符串作为单个整理元素。 整理符号 值不能与当前 图表映射 文件中的任何符号名称或此整理定义中定义的任何其他符号名称重复。 串 值指定由两个或两个以上字符组成的字符串,用于定义 整理符号 值。 以下是 整理元素 语句的语法的示例:
collating-element <希> from <C><H> collating-element <电子锐音符> from <急><E> collating-element <11> from <1><1>
由 整理元素 语句定义的 整理符号 值仅使用 LC_COLLATE 类别进行识别。
| 项 | 描述 |
|---|---|
| 整理符号 | 整理符号 语句指定整理顺序语句中使用的整理符号。 |
整理符号 语句的语法如下所示:
collating-symbol <整理符号>
整理符号 值不能与当前 图表映射 文件中的任何符号名称或此整理定义中定义的任何其他符号名称重复。 以下是 整理符号 语句的语法的示例:
collating-symbol <UPPER_CASE> collating-symbol <高>
由 整理符号 语句定义的 整理符号 值仅在 LC_COLLATE 类别中被识别。
| 项 | 描述 |
|---|---|
| 订单开始 | order_start 语句必须后跟一个或多个整理顺序语句,从而将整理权重分配给整理元素。 此语句是必需的。 |
order_start 语句的语法如下所示:
order_start <排序规则>, <排序规则>,...<排序规则> 整理顺序语句 order_end
<排序规则> 伪指令具有以下语法:
关键字, 关键字,...关键字; 关键字, 关键字,...关键字
其中, 关键字 是关键字 前进, 后退和 位置之一。
排序规则 伪指令是可选的。 如果存在,那么它们将定义要在字符串比较期间应用的规则。 指定的 排序规则 伪指令数定义每个整理元素被分配的权重数 (即,语言环境中的整理顺序数)。 如果不存在任何 排序规则 伪指令,那么将采用一个 前进 关键字,并进行基于字符而不是基于字符串的比较。 如果存在,那么第一个 排序规则 伪指令在使用主权重比较字符串时适用,第二个在使用辅助权重比较字符串时适用,以此类推。 每个 排序规则 伪指令集由一个; (分号) 分隔。 排序规则 伪指令由一个或多个以逗号分隔的关键字组成。 支持以下的关键字:
| 项 | 描述 |
|---|---|
| 转发 | 指定整理权重比较从字符串的开头到字符串的结尾继续进行。 |
| 向后 | 指定整理权重比较从字符串的末尾到字符串的开头继续进行。 |
| 位置 | 指定整理权重比较将考虑字符串中不受特殊符号 忽略限制的元素的相对位置。 即,如果字符串比较相等,那么与字符串起始点的距离最短的元素将首先整理。 |
前进 和 后退 关键字是互斥的。 以下是 <排序规则> 伪指令的语法的示例:
order_start 向前; 向后,位置
每个整理元素的可选操作数用于定义该整理元素的主权重,辅助权重或后续权重。 特殊符号 忽略 用于指示对字符串进行比较时要忽略的整理元素。
左侧为 省略号 关键字的整理语句会导致将右侧的 整理元素列表 应用于每个具有编码的字符,该编码在前一语句中左侧的字符与后一语句左侧的字符之间以数字形式进行。 如果 省略号 出现在第一个语句中,那么会将其解释为前一行指定了 NUL 字符。 ( NUL 字符是所有位都设置为 0 的字符。) 如果 省略号 出现在最后一条语句中,那么它将被解释为以下行指定了最大编码值。
出现在 整理元素列表 位置的 省略号 关键字指示要对所标识范围内的字符指定权重,从前一语句左侧的字符符号的权重开始,以数字方式递增。
字符集中的所有字符都必须按整理顺序放置,可以使用 未定义 特殊符号显式或隐式方式放置。 未定义 特殊符号包括所有未显式指定或带有省略号的编码字符集值。 这些字符按字符代码集值的顺序以字符整理顺序插入到 未定义 特殊符号所指示的点。 如果不存在 未定义 特殊符号,并且整理顺序未指定编码字符集中的所有整理元素,那么将发出警告,并将所有未定义的字符放置在字符整理顺序的末尾。
示例
下面是 LC_COLLATE 语言环境定义源文件类别中的整理顺序语句的示例:
order_start forward;backward
UNDEFINED IGNORE;IGNORE
<LOW> <LOW>;<space>
... <LOW>;...
<a> <a>;<a>
<a-acute> <a>;<a-acute>
<a-grave> <a>;<a-grave>
<A> <a>;<A>
<A-acute> <a>;<A-acute>
<A-grave> <a>;<A-grave>
<ch> <ch>;<ch>
<Ch> <ch>;<Ch>
<s> <s>;<s>
<ss> <s><s>;<s><s>
<eszet> <s><s>;<eszet><eszet>
... <HIGH>;...
<HIGH>
order_end以下是此示例的解释:
- 未定义 特殊符号指示为了进行整理而忽略定义中未指定的所有字符 (显式指定或省略号指定)。
- 以下各项之间的所有整理元素<space>和<a>具有相同的主等价类和基于其编码字符集值的个别辅助权重。
- 基于大写或小写的所有字符a字符属于同一主等价类。
- 该<c><h>多字符整理元素由以下项表示:<ch>并属于同一主等价类,<C><h>多字符整理元素。
- 该<eszet>字符被整理为<s><s>请指定有效字符串。 就是,一个<eszet>在进行比较之前,将字符扩展为两个字符。
文件
| 项 | 描述 |
|---|---|
| /usr/lib/nls/loc/* | 指定受支持语言环境的语言环境定义源文件。 |
| / usr/lib/nls/charmap/* | 指定受支持语言环境的字符集描述 (图表映射) 源文件。 |