Lotus notes OS_将LMBCS_翻译为UNICODE问题

Lotus notes OS_将LMBCS_翻译为UNICODE问题,lotus-notes,lotus,Lotus Notes,Lotus,我正在使用OSTranslate将邮件正文内容转换为Unicode字符串。对于小于字大小65535的字符*来说,这很好 WORD Length = MAXWORD; actualOutLength = OSTranslate(OS_TRANSLATE_LMBCS_TO_UNICODE, (char*)inPtr, Length, (char*)outPtr, Length); 转换后,输出数组仅包含源字符串的一部分 请建议设置大小的正确方法,因为我的输入字符串大小超过了MAXWORD大小限制。

我正在使用OSTranslate将邮件正文内容转换为Unicode字符串。对于小于字大小65535的字符*来说,这很好

WORD Length = MAXWORD;
actualOutLength = OSTranslate(OS_TRANSLATE_LMBCS_TO_UNICODE, (char*)inPtr,
Length, (char*)outPtr, Length);
转换后,输出数组仅包含源字符串的一部分


请建议设置大小的正确方法,因为我的输入字符串大小超过了MAXWORD大小限制。

我想到的一种方法是我已经通过读取Max Word/2块中的数据实现了第二个解决方案,但是考虑了一个边界条件的边界条件,其中有一个汉字字符占据了3个字节,其中第一个字节出现在第一个块中,接下来的两个字节在下一个块中,这会影响解决方案吗?是的,我确实这样做了。理解你所说的边界条件。这就是我建议使用NLS_get()的原因函数来扫描和计数字符。Notes C API工具包中的NLS函数是为正确处理LMBCS字符而构建的。我把一些事情搞乱了,如果你能给我一个使用NLS_get函数读取数据的示例代码,我将非常感谢。对不起,我没有NLS调用的任何示例代码,但是Notes C中的文档PI toolkit看起来非常简单。每次调用它时,**ppString参数将前进到输入缓冲区中的下一个多字节字符,因此您可以使用它来计算字符数。因此,您可以保存起始指针,在循环中调用NLS_get N次,现在您的缓冲区中有N个多字节字符的结束指针。看起来您必须从结束指针中减去起始指针才能得到长度,但是您可以调用OSTranslate获取N个字符。谢谢!!我将尝试此解决方案。