SnaNlsMapString

调用 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_typeout_type 参数包含未定义的值。

错误_无效_数据

如果在 lpSrcStr 参数中传递了错误的值,则返回此错误;例如,如果输入字符串末尾有前导字节。

内存不足错误 (ERROR_OUTOFMEMORY)

如果无法分配内存供 SNANLS DLL 使用,则返回此错误。