CPINFO 结构 (winnls.h)

包含有关代码页的信息。 GetCPInfo 函数使用此结构。

语法

typedef struct _cpinfo {
  UINT MaxCharSize;
  BYTE DefaultChar[MAX_DEFAULTCHAR];
  BYTE LeadByte[MAX_LEADBYTES];
} CPINFO, *LPCPINFO;

成员

MaxCharSize

代码页中字符的最大长度(以字节为单位)。 对于 SBCS () 的单 字节字符集 ,长度可以为 1;对于 DBCS) (双字节字符集 ,长度可以为 2;对于其他字符集类型,长度可以大于 2。 由于其他因素(例如,使用 ISCII 或 ISO-2022-xx 代码页),函数无法使用 大小来区分 SBCS 或 DBCS 与其他字符集。

DefaultChar[MAX_DEFAULTCHAR]

将字符串转换为特定代码页时使用的默认字符。 如果未指定显式默认字符, 则 WideCharToMultiByte 函数将使用此字符。 对于代码页,默认值通常是“?”字符。

LeadByte[MAX_LEADBYTES]

前导字节范围的固定长度数组,前导字节范围的数量是可变的。 如果代码页没有前导字节,则数组的每个元素都设置为 NULL。 如果代码页具有前导字节,则数组将为每个范围指定一个起始值和一个结束值。 范围是非独占的,任何代码页的最大范围数为 5。 数组使用两个字节来描述每个范围,两个 null 字节作为最后一个范围之后的终止符。

注意 某些代码页使用前导字节和其他编码机制的组合。 此成员通常仅针对以某种形式使用前导字节的代码页的子集进行填充。 有关详细信息,请参阅“备注”部分。
 

备注

前导字节对于允许超过 256 个字符的 DBCS 代码页是唯一的。 前导字节是 DBCS 中 2 字节字符的第一个字节。 在每个 DBCS 代码页上,前导字节占用特定范围的字节值。 对于不同的代码页,此范围是不同的。

对于大多数代码页,前导字节信息并不十分有用,甚至没有为许多多字节编码(例如 UTF-8 和 GB18030)提供。 不建议应用程序使用此信息来预测 MultiByteToWideCharWideCharToMultiByte 函数将执行的操作。 如果前导字节后面的字节不符合预期,函数最终可能会使用默认字符或执行其他默认行为。

GetCPInfoEx 函数使用的 CPINFOEX 提供此结构的扩展版本。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 winnls.h (包括 Windows.h)

另请参阅

CPINFOEX

GetCPInfo

MultiByteToWideChar

国家语言支持结构

WideCharToMultiByte