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

DefaultChar[MAX_DEFAULTCHAR]

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

LeadByte[MAX_LEADBYTES]

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

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

UnicodeDefaultChar

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

CodePage

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

CodePageName[MAX_PATH]

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

注解

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

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

注意

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

要求

   
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
标头 winnls.h (包括 Windows.h)

另请参阅

GetCPInfoEx

MultiByteToWideChar

国家语言支持结构

WideCharToMultiByte