Joh*_*n C 3 windows unicode clipboard internationalization character-encoding
我们的应用程序在非unicode版本中有一个错误; 如果我们将一些俄罗斯字符复制到剪贴板(使用SetClipboardData(CF_TEXT)),然后将它们粘贴到记事本中,它们不会被粘贴为俄语字符,而是作为代码页1252当量(例如Э变为Ý).
在尝试解决这个问题时,我为粘贴制作了一个小测试应用程序,如果我使用GetClipboardData(CF_TEXT),它的工作正常.但是,如果我使用GetClipboardData(CF_UNICODETEXT),它与记事本完全相同.
所以我假设记事本只是在粘贴上使用CF_UNICODETEXT.根据我读过的MS文档,剪贴板应该能够将CF_TEXT转换为CF_UNICODE文本.实际上在页面上:
http://msdn.microsoft.com/en-us/library/ms649013.aspx#_win32_Synthesized_Clipboard_Formats
它说"将转换格式放在剪贴板上没有任何好处."
如果这是真的那么我必须(我希望)犯一个容易纠正的简单错误.
任何人都可以帮我解决这个问题吗?谢谢
你可能错过了CF_LOCALE俄罗斯人吗?CF_TEXT除非另有说明,否则使用系统区域设置进行解释.如果您的系统区域设置字符集是CP1252,但您的应用程序区域设置是CP1251,则在将8位文本转换为Unicode时,Windows将会误猜.