Windows 7 剪贴板乱码的问题

2012年7月29日

记得两年前,我发过一篇博文(The case of the CPSIO wrong encoding),说的是 Windows Vista 上,我用的英文版的 Windows Vista,在里面复制粘贴中文的时候出问题。复制的时候使用的剪贴板格式是 CF_TEXT,粘贴是在 Vim 里面,它用的格式是 CF_UNICODETEXT。出现的是乱码,具体表现是每个中文字符变成了两个乱码字符。可能是通过 CP936 编码(简体中文国标扩展码,又称 GBK)的字符通过 CP1252(西欧字符,又称 ISO-8859-1)解码了。当时的解决方案是使用控制面板来创建新用户,就没有这个问题,而通过 net user 命令创建的用户就有这个问题。但今天发现这个可能不是根本原因。

今天,在简体中文版的 Windows 7 上我也见到了这种奇怪现象,而且在控制面板创建的用户账户上也同样有问题。这说明我当初的发现并不准确。为了解决这个问题,我动用了大名鼎鼎的百度搜索引擎。结果,在著名的 CSDN 网站上,找到了这个问题的答案。

详见 http://topic.csdn.net/u/20101016/19/8e8d1511-01cc-40dd-97b1-3b083433434e.html

主要的办法非常特别:它的原因不是控制面板里区域选项的语言选择,也不是“非 Unicode 程序的默认编码”,因为这些都是设成中文(中国)的。问题居然出在输入法:EN 的输入法。要避免把 EN 输入法作为默认,而使用中文的 CN 输入法或是其他中文输入法作为默认。这样一来就解决问题了!

留下您的评论