CPINFOEXA 结构 (winnls.h)

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

语法

typedef struct _cpinfoexA {
  UINT  MaxCharSize;
  BYTE  DefaultChar[MAX_DEFAULTCHAR];
  BYTE  LeadByte[MAX_LEADBYTES];
  WCHAR UnicodeDefaultChar;
  UINT  CodePage;
  CHAR  CodePageName[MAX_PATH];
} CPINFOEXA, *LPCPINFOEXA;

成员

MaxCharSize

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

DefaultChar[MAX_DEFAULTCHAR]

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

LeadByte[MAX_LEADBYTES]

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

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

UnicodeDefaultChar

从特定代码页翻译中使用的 Unicode 默认字符。 默认值通常是“?” 字符或片假名中间点字符。 MultiByteToWideChar 函数使用 Unicode 默认字符。

CodePage

代码页值。 此值反映传递给 GetCPInfoEx 函数的代码页。 有关 ANSI 和其他代码页的列表,请参阅 代码页标识符

CodePageName[MAX_PATH]

代码页的全名。 请注意,此名称已本地化,不能保证操作系统版本或计算机之间的唯一性或一致性。

言论

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

铅字节信息对大多数代码页并不十分有用,甚至没有为许多多字节编码(例如 UTF-8 和 GB18030)提供。 不建议使用此信息来预测 multiByteToWideChar 或 WideCharToMultiByte 函数 的内容。 如果遵循前导字节的字节不符合预期,该函数最终可能会使用默认字符或执行其他默认行为。

注意

winnls.h 标头将 CPINFOEX 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

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

另请参阅

GetCPInfoEx

MultiByteToWideChar

国家语言支持结构

WideCharToMultiByte