我似乎在将字节数组(包含 word 文档中的文本)转换为 LPTSTR (wchar_t *) 对象时遇到问题。每次代码执行时,我都会返回一堆不需要的 Unicode 字符。
我认为这是因为我没有在某处进行正确的调用,或者没有正确使用变量,但不太确定如何解决这个问题。希望这里有人可以指导我正确的方向。
发生的第一件事是调用 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 );
一旦我们执行开始分配内存的那一行,我们的 image 变量就会被一堆不需要的 Unicode 字符填充:
췍췍췍췍췍췍췍췍﷽﷽����˿於潁
然后我们做一个 memcpy 来传输所有的数据
memcpy(image,value,document->Length);
这只会导致出现更多不需要的 Unicode 字符:
敔瑳䐠捯浵湥൴촊﷽﷽����˿於潁
我认为我们遇到的问题要么与我们如何在字节数组中存储值有关,要么可能与我们将数据从字节数组复制到 LPTSTR 变量有关。任何解释我做错了什么的帮助,或者任何能指引我正确方向的帮助都将不胜感激。