精易论坛

标题: 剪辑板_置文本 () ---SetClipBoardText 系统键盘为英文输入法时中文乱码 [打印本页]

作者: xunkoo    时间: 2017-10-12 14:39
标题: 剪辑板_置文本 () ---SetClipBoardText 系统键盘为英文输入法时中文乱码
本帖最后由 xunkoo 于 2017-10-12 14:49 编辑

剪辑板_置文本 () 也一样

这样复制普通文本时如果系统键盘输入法不是中文时会出现类似 下单æ–1æ3 这种乱码(补充一下:我的机器没问题,而且模仿不出英文键盘,可能是没有卸载掉中文键盘的原因,其他机器测了4台结果2台乱码,问题对半)


网上查了很久,其中两个回答如下:

sData 是 String 吧,我再弄 Access 密码(剪切板输出)时也遇到过。大致原因是 VB 调用 API 时 String 自动装换编码,由 VB 的Unicode 转为系统本地编码,要阻止其胡乱转换,可以自己手工转换,以 Byte 数组的方式输出。


-------------------------------------------------------------------------------------------------------------------------------------------
SetClipboardData(UINT uFormat,HANDLE hMem);
uFormat:
CF_TEXT ——ANSI文本格式。回车/换行(CR-LF)组合表示换行。必须用NULL结束字符串。使用此格式为ANSI文本。
CF_UNICODETEXT ——Unicode文本格式。回车/换行(CR-LF)组合表示换行。必须用NULL结束字符串。这是Unicode格式的字符串。
看看是否选错模式了,一般ANSI文本格式不会出现乱码



作者: 项目部002    时间: 2017-10-13 21:08
收到反馈




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4