Delphi 什么是代码页0?
我正在使用Delphi函数Delphi 什么是代码页0?,delphi,unicode,character-encoding,delphi-2009,codepages,Delphi,Unicode,Character Encoding,Delphi 2009,Codepages,我正在使用Delphi函数 StringCodePage 我对COM函数返回的字符串(Acrobat注释getContents-请参阅我的其他文章)调用它,它返回0 什么是0?Ansi?代码页0是CP\U ACP,当前的Windows Ansi代码页 从Windows.pas: {$EXTERNALSYM CP_ACP} CP_ACP = 0; { default to ANSI code page } 发件人: CP_机场核心计划
StringCodePage
我对COM函数返回的字符串(Acrobat注释getContents-请参阅我的其他文章)调用它,它返回0
什么是0?Ansi?代码页0是CP\U ACP,当前的Windows Ansi代码页 从Windows.pas:
{$EXTERNALSYM CP_ACP}
CP_ACP = 0; { default to ANSI code page }
发件人:
CP_机场核心计划
当前系统显示Windows ANSI代码页。此值在不同的计算机上可能不同
计算机,甚至在同一网络上。它可以在同一台计算机上更改,从而导致
存储的数据变得无法恢复地损坏。此值仅用于临时设置
如有可能,应使用UTF-16或UTF-8进行使用和永久存储
StringCodePage()
返回0的唯一方法是传入一个空白的ansisting
,从而返回其编译时代码页相关性,或者传入一个非空白的ansisting
,该非空ansisting将代码页0分配给其负载。Delphi对COM字符串使用WideString
,而StringCodePage()
对于任何字符串类型都不会返回0,除非是纯ansisting
。在D2009中,RTL没有很好地将操作系统的实际运行时代码页存储到ansisting
payloads中,因此它们通常包含编译时代码页亲和力0。这在字符串转换方面是功能性的,但不是很明确。这在以后的Delphi版本中得到了修复,因此AnsiString
有效负载现在包含在运行时确定的实际操作系统代码页。知道您可以更改它(无需重新安装)也可能很有用:StringCodePage()
可以返回0的唯一方法是,如果您将一个空白AnsiString
传递给它,或者一个非空的应答
,其有效负载中包含代码页0。Delphi对COM字符串使用WideString
。在D2009中,RTL没有很好地将实际代码页值存储到ansisting
payloads中,因此它通常具有0,因为这是编译时代码页相关性,而不是运行时相关性。这在以后的Delphi版本中得到了修复。您能将此作为答案发布吗?