调用 SnaNlsMapString 函数将字符串从一个代码页转换为另一个代码页。
语法
int WINAPI SnaNlsMapString(
LPCTSTR lpSrcStr,
LPTSTR lpDestStr,
UINT inCodePage,
UINT outCodePage,
Int in_length,
int out_length,
UINT in_type,
UINT out_type,
WORD *Options,
LONG*lConvRequiredLen
);
参数
lpSrcStr
提供的参数。 要转换的输入源字符串。
lpDestStr
返回的参数。 如果 out_length 为零,翻译后的字符串可能为 NULL。
inCodePage
提供的参数。 指定传入源字符串的代码页;如果输入为 Unicode,则忽略。
outCodePage
提供的参数。 指定输出转换字符串的代码页;如果输出为 Unicode,则忽略。
in_length
提供的参数。 如果输入为多字节或宽字符,则指定输入源字符串的长度(以字符为单位)。
out_length
提供的参数。 指定当输出为多字节或宽字符(如果输出为 Unicode)时,输出转换后的字符串的最大长度(以字符为单位)。
in_type
提供的参数。 指定输入源字符串的类型。
in_type的可能值为 SNA_MULTIBYTE 表示多字节,SNA_UNICODE 表示 Unicode。
out_type
提供的参数。 指定输出转换后的字符串的类型。
out_type的可能值为SNA_MULTIBYTE表示多字节,SNA_UNICODE表示Unicode。
选项
提供并返回的参数。 作为提供的参数,这指定了一组可应用于翻译过程的选项,包括 TrnsDT 选项和翻译的默认字符。 返回时,此参数指示输出转换字符串所需的缓冲区长度(如果函数调用失败)。
lConvRequiredLen
返回的参数。 调用失败时所需的缓冲区长度。
返回值
SnaNlsMapString 函数返回成功时写入 lpDestStr 的字符数或宽字符数;否则,失败时返回 0。
失败时,应使用 Win32® GetLastError 函数返回指示失败原因的错误代码。 GetLastError 返回的可能值如下所示:
错误_不支持
返回此错误有两种可能原因:一是 NLS 语言资源文件不可用,二是源字符串的in_type和目标字符串的out_type类型不同。
错误_缓冲区溢出 (ERROR_BUFFER_OVERFLOW)
如果输出缓冲区太小,则返回此错误。 在这种情况下,Options 参数返回的值是out_length所需的值。
参数无效错误
如果在参数中传递了错误的值,则返回此错误;例如,如果 in_type 或 out_type 参数包含未定义的值。
错误_无效_数据
如果在 lpSrcStr 参数中传递了错误的值,则返回此错误;例如,如果输入字符串末尾有前导字节。
内存不足错误 (ERROR_OUTOFMEMORY)
如果无法分配内存供 SNANLS DLL 使用,则返回此错误。