Ctrl + V 将 UTF-8 字符串从剪贴板粘贴到 MS WORD 中,结果为 ??? 字符

Ctrl + V 将 UTF-8 字符串从剪贴板粘贴到 MS WORD 中,结果为 ??? 字符

我已经在 Windows 窗体 [C#] 上开发了应用程序,然后使用复制文本

System.Windows.Form.Clipboard.SetText("โปรแกรม Microsoft Word ใช้งานได้");

发送后keybd_event“Ctrl+V” [user32.dll]。我随机发现了类似这篇文章的“???”文本问题。

在 Windows 上复制粘贴后,Unicode 字符被替换为问号

此“???”问题随机出现在 MS Word 应用程序中,但将文本放入记事本和https://regex101.com/工作正常。

例子 :

Microsoft Word 帮助 => ???????微软 Word ?????????

答案1

2020/8/17更新:

在免费剪贴板查看器 3.0 的调试帮助下,我发现

也许目标应用程序会自动将其检测为???格式的文本或OEM文本。为了防止这种情况,我使用了以下几行代码。

DataObject dataObject = new DataObject(DataFormats.UnicodeText, text);
Clipboard.SetDataObject(dataObject);

由于传递的是 DataObject 而不是字符串,它将倾向于生成剪贴板对象,该对象是文本、OEM 文本和 Unicode 文本,是非英语语言可读的文本格式。

问题解决了。也许。

相关内容