Delphi 7 - 为什么Windows 7会在运行时更改字符编码?

Luk*_*Led 6 delphi encoding delphi-7 windows-7

我有一个delphi 7表单:

表格http://i44.tinypic.com/13ymott.jpg

和我的代码:

代码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有关.

Luk*_*Led 1

这个问题的答案解决了我的问题:

GetThreadLocale 返回的值与 GetUserDefaultLCID 不同吗?

一种解决方案:

我们发现奇怪的事情是,通过控制面板切换到不同的区域设置,然后切换回新西兰可以解决该问题。我很想知道相同的解决方法是否可以为您解决问题,只是为了验证我们是否看到了相同的现象。

第二:

initialization
  SetThreadLocale(LOCALE_USER_DEFAULT);
  GetFormatSettings;
Run Code Online (Sandbox Code Playgroud)

两种解决方案都效果很好,并且应用程序问题消失了。