Delphi 7 – 为什么Windows 7会在运行时更改字符编码?
我有一个delphi 7表单:
Form http://i44.tinypic.com/13ymott.jpg 和我的代码: Code http://i44.tinypic.com/x1gh9c.jpg 当我在Windows 7中运行此表单时,我看到: Windows7Form http://i41.tinypic.com/riglzl.jpg 在设计时,表单在第一个标签中有抛光字母,但在运行时没有它们.它在Vista或Windows XP上看起来不错.当我在代码中设置第二个标签的标题时,一切正常,字符被正确编码. Windows 7顶部标签的前5个代码:65 97 69 101 83 Windows Vista / XP上顶级标签的前5个代码:165 185 202 234 140 每个系统的前5个底部标签代码:165 185 202 234 140 Windows 7改变编码,为什么?我的系统设置似乎没问题.我在控制面板中为非unicode应用程序设置了适当的语言. 编辑 此问题不仅与表单上的标签有关,还与FastReport(切换到EASTERN_CHARSET解决问题)或通过COM接口访问Microsoft Excel有关. 解决方法
我确实在win XP中重现了Delphi 2010中的行为.
procedure Button1Click(Sender : TObject); begin ShowMessage(AnsiString(Label1.Caption)); end; 在这种情况下,Label1.Caption到AnsiString的转换是通过WideCharToMultiByte(Windows API)完成的. API有以下注释:
因此,我最好的猜测是,行为的差异来自于您拥有的Windows 7版本具有与您的vista / XP工作站不同的活动CodePage. 我仍然需要找到如何在系统上获取活动代码页…我最好的猜测是它是在控制面板的区域设置中定义的.但是我仍然需要验证这一点…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |