我正在使用带有参数 130 的函数 Char 和 Chr,并且在 Delphi 2007 e XE3 中表现不同。
Delphi 2007:Char(130) 或 Chr(130) - 结果:逗号
Delphi XE3:Char(130) 或 Chr(130) - 结果:#$0082
我使用 AnsiChar(130) 解决了问题。
我的问题是我在使用 AnsiChar 时是否有问题。我应该在整个项目中通过 AnsiChar 更改 Chr / Char 吗?
谢谢
我正在使用带有参数 130 的函数 Char 和 Chr,并且在 Delphi 2007 e XE3 中表现不同。
Delphi 2007:Char(130) 或 Chr(130) - 结果:逗号
Delphi XE3:Char(130) 或 Chr(130) - 结果:#$0082
我使用 AnsiChar(130) 解决了问题。
我的问题是我在使用 AnsiChar 时是否有问题。我应该在整个项目中通过 AnsiChar 更改 Chr / Char 吗?
谢谢
这两个略有不同:
在 Delphi 的 Unicode 前后版本中,您可以互换使用Char()
和版本。Chr()
但是,结果会因您使用的 Delphi 版本而异。
对于 pre-Unicode Delphi,Char
是一个 8 位 ANSI 字符。对于后 Unicode Delphi,Char
是 16 位 UTF-16 字符。
你应该如何解决这个问题取决于你想要达到的目标。如果你想埋头苦干,假装 Unicode 字符不存在,那么也许你想Char
用AnsiChar
. 而且您还希望您的程序仅在具有将字符 130 映射到该字符的语言环境的机器上运行。请注意,并非所有 Windows ANSI 语言环境都这样做。
但是,我怀疑无论是什么问题,正确的解决方案都是采用 Unicode,并为该字符使用 UTF-16 编码。它是单低 9 引号 U+201A。在 Unicode Delphi 中这样写:
Chr($201A)
或像这样:
#$201A
或像这样:
'‚'
另一方面,也许您确实需要逗号,请注意这AnsiChar(130)
不是逗号,而是实际上是引号。
如果你想要一个逗号(COMMA U+002C),那很简单:
Chr($002C)
或者
#$002C
或者
','