IsDBCSLeadByteEx 函数 (winnls.h)

确定指定的字符是否可能是前导字节。 前导字节是双字节字符集中双字节 字符 的第一个字节, (代码页的 DBCS) 。

语法

BOOL IsDBCSLeadByteEx(
  [in] UINT CodePage,
  [in] BYTE TestChar
);

参数

[in] CodePage

用于检查前导字节范围的代码页的标识符。 此参数可以是 Unicode 和字符集常量 中定义的代码页标识符之一,也可以是以下预定义值之一。 此函数仅在代码页 932、936、949、950 和 1361 中验证前导字节值。

含义
CP_ACP
使用系统默认的 Windows ANSI 代码页。
CP_MACCP
使用系统默认的 Macintosh 代码页。
CP_OEMCP
使用系统默认 OEM 代码页。
CP_THREAD_ACP
对当前线程使用 Windows ANSI 代码页。

[in] TestChar

要测试的字符。

返回值

如果字节是前导字节,则返回非零值。 如果字节不是前导字节或字符是单字节字符,则函数返回 0。 若要获取扩展的错误信息,应用程序可以调用 GetLastError

注解

注意 此函数不验证尾字节是否存在或有效性。 因此, MultiByteToWideChar 可能无法识别使用 IsDBCSLeadByte 的应用程序报告为前导字节的序列。 应用程序很容易与 MultiByteToWideChar 的结果不同步,这可能会导致意外错误或缓冲区大小不匹配。
 
通常,应用程序应使用 MultiByteToWideChar 将数据转换为 UTF-16 并在该编码中处理它,而不是尝试对代码页数据进行低级别操作。

前导字节值特定于每个不同的 DBCS。 某些字节值可以在单个代码页中显示为 DBCS 字符的前导字节和尾字节。 因此, IsDBCSLeadByteEx 只能指示潜在的前导字节值。

为了理解 DBCS 字符串,应用程序通常从字符串的开头开始,向前扫描,在遇到前导字节时进行跟踪,并将下一个字节视为同一字符的尾随部分。 若要备份,应用程序应使用 CharPrevExA ,而不是尝试开发自己的算法。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 winnls.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

MultiByteToWideChar

Unicode 和字符集函数

Unicode 和字符集

WideCharToMultiByte