我似乎将一个字节数组(包含word文档中的文本)转换为LPTSTR(wchar_t *)对象时出现问题。每次执行代码时,我都会收到一些不需要的Unicode字符。将字节数组的内容转换为wchar_t *
我想这是因为我没有正确调用某个地方,或者没有正确使用变量,但不太清楚如何处理这个问题。希望这里有人能指导我朝着正确的方向前进。
第一件事发生在我们调用C#代码来打开Microsoft Word并将文档中的文本转换为字节数组。是
byte document __gc[];
document = word->ConvertToArray(filename);
的文件内容如下:
{84, 101, 115, 116, 32, 68, 111, 99, 117, 109, 101, 110, 116, 13, 10}
这最终是以下字符串: “测试文档”。
我们下一步是一旦我们执行我们开始分配内存行分配给字节数组存储到一个LPTSTR变量的内存,
byte __pin * value;
value = &document[0];
LPTSTR image;
image = (LPTSTR)malloc(document->Length + 1);
,我们的形象变量被装满一堆不需要的Unicode字符:
췍췍췍췍췍췍췍췍﷽﷽����˿於潁
然后我们做的memcpy转移了所有的数据
memcpy(image,value,document->Length);
刚刚引起更多不必要的Unicode字符显示:
敔瑳䐠捯浵湥൴촊﷽﷽����˿於潁
我想,我们遇到的问题或者是关系到我们如何存储字节数组中的值,或可能,当我们在数据复制从字节数组到LPTSTR变量。任何帮助解释我做错了什么,或任何指向我在正确的方向将不胜感激。
“每次执行代码时,都会得到一串返回的Unicode字符”您知道Windows上的wchar_t是_supposed_是Unicode,对吧? Windows使用UTF-16作为其wchar_t编码。 – bames53
所有字符都是Unicode字符。 – melpomene
'memcpy'不是在char和wchar_t之间进行转换的适当方式......它根本不做任何转换。 – bames53