将UTF-8数据复制到剪贴板 [英] Copying UTF-8 data to Clipboard

查看:84
本文介绍了将UTF-8数据复制到剪贴板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我正在尝试将Unicode UTF-8数据直接放到Windows剪贴板上.为什么这不起作用:

Hi,

I''m trying to put Unicode UTF-8 data directly onto the Windows clipboard. Why does this not work:

HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, 16);
unsigned char *px = (unsigned char*) GlobalLock(hGlobal);
//a 3 byte UTF-8 character:
px[0] = 0xe0;
px[1] = 0xa0;
px[2] = 0xb0;
px[3] = 0x00;
OpenClipboard(hWnd);
EmptyClipboard();
GlobalUnlock(hGlobal);
SetClipboardData(CF_UNICODETEXT, px);
CloseClipboard();



数据似乎总是以UTF-16格式保存在剪贴板上,即每个代码2个字节.

有什么建议可以实现吗?

问候,

geoff



Data always seems to go on the Clipboard as UTF-16, ie 2 bytes per code.

Any suggestions how I can achieve?

regards,

geoff

推荐答案

CF_UNICODETEXT声明您传递的数据是Unicode文本,每个字符2个字节.
UTF-8是每个字符多字节.
它们不一样.

首先将您的UTF-8文本转换为Unicode,或者改用CF_TEXT.
CF_UNICODETEXT states that the data you''re passing is a Unicode text, which is 2 bytes per character.
UTF-8 is multibyte per character.
They are not the same.

Convert your UTF-8 text to Unicode first, or use CF_TEXT instead.


这篇关于将UTF-8数据复制到剪贴板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆