【问题标题】:after saving delphi form, it loses accented characters保存delphi表单后,它会丢失重音字符
【发布时间】:2010-10-13 14:59:51
【问题描述】:

我在我的 IDE 中打开了 Delphi 7 中的一些表单。某些重音字符在表单中无法正确显示,当我更改包含此类字符的表单时,重音字符会丢失。

例如在 dfm 中编码为 #337 a 的东西在保存的 dfm 中变成了 u

你能说出哪里出了问题吗?

更新: 在我更改控制面板、区域和语言、选项卡格式后,问题已解决。 我将格式从英语更改为带有重音字符的语言。

【问题讨论】:

  • 你真的需要 Unicode Delphi。

标签: delphi delphi-7


【解决方案1】:

Delphi 7 不支持 Unicode,只支持 ASCII。这就是不显示“额外”字符的原因。

控件能够显示 unicode(因为 Windows 可以)。但是 dfm 文件仍然是 ASCII 格式,你不能保证 127 以上的字符。(而且 VCL 也不支持它们)。

您可以切换到 2010 或 2011 (XE) 以获得 Unicode 支持。

【讨论】:

  • 说实话,我怀疑这是否完全正确。我们使用的是 Delphi 2006,它不是 Unicode,并且 ' 中的重音符号不会丢失。例如,单词“Previsión”将作为“Previsi'#243'n”存储在 DFM 中。据我所知,这在 Delphi 7 中不是问题,但我无法对其进行测试。
  • 您可能会幸运地使用 128-255 范围内的等价字符。但是 #337 不起作用。
  • 嗯,不知何故它得到了修复...我更改了本地设置和很多东西...所以它可以修复。
  • 它使用微软所谓的 ANSI,即依赖于语言环境的字符集。
  • 使用 WideString 代替 String!您不需要转换它,因为 WideString=String。我正在使用 WideString,因为我住在拉脱维亚,一切正常。 :))
【解决方案2】:

在非 unicode delphi 版本(例如 delphi 7)中,如果您当前的代码页支持字符,则 Delphi 会将您的重音字符存储到 DFM 中。如果您在设置为不同代码页的系统上重新加载,您将看不到该字符。

在 unicode Delphi(2009 或更高版本)中,您将能够将所需的任何代码点存储到 DFM 中。

【讨论】:

【解决方案3】:

AFAIR,在 Delphi 7 生成的 dfm 文件中,所有 dfm 内容都编码为 UTF-8。

所以你可以使用你需要的任何字符。

但您需要为组件设置正确的 Font CharSet 属性值。

【讨论】:

  • 所有 dfm 内容都不是 UTF-8,而是 Delphi 7 中的 ANSI。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 2019-10-20
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
相关资源
最近更新 更多