我的程序使用的 2 个字符串中的某些字符有问题。
字符串 #1 使用从 3rd 方应用程序获取数据的 VB 代码填充。字符串 #2 从同一个第 3 方应用程序中获取类似数据,但它使用 C++ dll 获取数据并将其发送到 VB。
数据中有一些奇怪的符号。
我不太了解编码和不同的字符集,但我会尽力解释它。
我将使用“Т”作为我的示例角色。
“Т”(注意这不是正常的大写字母 t)它是 unicode 十进制值 1058 http://www.unicodemap.org/details/0x0422/index.html
当此字符在运行时出现在 String #1 中时,它显示为“?”,我相信这正是 VB6 显示一些 unicode 字符的方式。当我在字符上使用 AscW 时,它返回正确的值 1058。
当我将字符串输出到文本文件时,它显示为“?”。
C++ DLL 中字符串 #2 中的相同字符显示为 2 个字符“Т”
当我将该字符串输出到文本文件时,该字符正确显示为“Т”。
我只是出于测试目的将内容输出到文本文件。我只需要在运行时对 2 个字符串进行编码/显示相同。
知道这里发生了什么吗?有什么方法可以让奇怪的字符在两个字符串中都显示相同?
谢谢
编辑:C++ dll 也是多字符集,并以 BSTR 字符串发送数据
C++ DLL 中的代码
allChat 是一个 CString
BSTR Message;
int len = allChat.GetLength();
Message = SysAllocStringByteLen ((LPCTSTR)allChat,len+1);
消息返回到 VB 应用程序.. 之后字符串没有任何反应。
字符串 #1 只是一个普通的 VB 字符串