uconvdef 源文件格式

用途

Uconvdef 命令的输入定义 UCS-2 (Unicode) 转换映射。

描述

转换映射值是使用 UCS-2 符号字符名称定义的,后跟多字节代码集的字符编码 (代码点) 值。 例如,

<U0020>    \x20

表示在以下值之间的映射:<U0020>UCS-2 符号字符名称 (对于空格字符和\x20ASCII 中的空格字符的十六进制代码点。

除了代码集映射之外, Uconvdef 命令还会解释伪指令以生成已编译的表。 这些伪指令必须在代码集映射部分之前。 它们由以下用< >(尖括号)包围的关键词组成,从第1列开始,后跟空格及要赋予该符号的值:

描述
<代码集名称> 编码字符集的名称,用引号 ("") 括起,为其定义了字符集描述文件。
<mb_cur_max> 以多字节字符为单位的最大字节数。 缺省值为 1。
<mb_cur_min> 这是一个无符号正整数值,用于定义编码字符集的字符中的最小字节数。 值为小于或等于 <mb_cur_max>。 如果未指定,那么最小数目将等于 <mb_cur_max>
<转义字符> 这是一个转义字符,用于指示以特殊方式解释后面的字符。 缺省值为反斜杠 (\)。
<comment_char> The character that, when placed in column 1 of a 图表映射 line, is used to indicate that the line is ignored. 缺省字符为编号符号 (#)。
<角色名称掩码> 由 UCS-2 符号名称的格式说明符组成的带引号字符串。 此值必须为 AXXXX 值,指示字母字符后跟 4 个十六进制数字。 并且,字母字符必须是 U ,并且十六进制数字必须表示该字符的 UCS-2 代码点。 基于此掩码的符号字符名称的示例:<U0020>Unicode 空格字符。
<uconv_class> 指定该代码集的 类型 。 它必须是下列其中一项:
SBCS
单字节编码
DBCS
无状态双字节编码,单字节编码或混合编码
服务状态 (服务)
有状态的双字节编码,单字节编码或混合编码
MBCS
无状态多字节编码

类型 用于将 Uconvdef 定向到要构建的表类型。 它还存储在表中,以指示 UCS 转换方法中的处理算法类型。

<区域设置> 指定需要语言环境信息时要使用的缺省语言环境名称。
<subchar> 指定多字节代码集内的缺省替代字符的编码。

映射定义部分由一系列映射定义行组成,这些行在 字符映射 声明之前,并由 结束 CHARMAP 声明终止。 空行和第一列中包含 <comment_char> 的行将被忽略。

映射行中的符号字符名称必须遵循 <char_name_mask>中指定的模式,但保留的符号名称 <unassigned>除外,该名称指示未分配关联的代码点。

字符集映射定义的每个非注释行都必须采用下列其中一种格式:

  1. "%s %s %s/n", <symbolic-name>, <encoding>, <comments>

    例如:

    <U3004>      \x81\x57
    此格式定义单个符号字符名称和相应的编码。

    编码部分以下列格式表示为一个或多个并置的十进制,十六进制或八进制常量:

    • "%cd%d", <escape_char>, <decimal byte value>
    • "%cx%x", <escape_char> , <hexadecimal byte value>
    • "%c%o", <escape_char>, <octal byte value>
    十进制常量由两个或两个以上以转义字符和小写字母 D开头的十进制数字表示,如下所示:\d97\d143. 十六进制常量由两个或两个以上以转义字符和小写字母 X开头的十六进制数字表示,如下所示:\x61\x8f. 八进制常量由两个或两个以上以转义字符开头的八进制数字表示。

    每个常量表示一个单字节值。 当为多字节字符值并置常量时,最后一个值指定最小有效八位元,而前面的常量指定连续的更有效八位元。

  2. "%s. . .%s %s %s/n", <symbolic-name>, <symbolic-name>, <encoding>, <comments>

    例如:

    <U3003>...<U3006>   \x81\x56
    此格式定义了一系列符号字符名称和相应的编码。 范围被解释为一系列由字母前缀和数字后缀定义的范围内的所有值组成的符号名称。

    将列出的编码值分配给第一个符号名称,并为范围内的后续符号名称分配相应的递增值。 例如,以下行:

    <U3003>...<U3006>   \x81\x56
    被解释为:
    <U3003>      \x81\x56
    <U3004>      \x81\x57
    <U3005>      \x81\x58
    <U3006>      \x81\x59
  3. "<unassigned> %s. . .%s %s/n", <encoding>, <encoding>, <comments>

    此格式定义一个或多个未分配的编码的范围。 例如,以下行:

    <unassigned>   \x9b...\x9c
    被解释为:
    <unassigned>   \x9b
    <unassigned>   \x9c