6

我正在使用德尔福功能

StringCodePage

我在 COM 函数返回的字符串上调用它(Acrobat Annotation getContents - 请参阅我的其他帖子),它返回 0。

什么是0?安西?

4

2 回答 2

9

代码页 0 是 CP_ACP,当前的 Windows ANSI 代码页。

从 Windows.pas:

{$EXTERNALSYM CP_ACP}
CP_ACP                   = 0;             { default to ANSI code page }

来自MSDN

CP_ACP

当前系统 Windows ANSI 代码页。这个值在不同的计算机上可能不同,即使在同一个网络上。它可以在同一台计算机上更改,从而导致存储的数据不可恢复地损坏。此值仅供临时使用,如果可能,应使用 UTF-16 或 UTF-8 进行永久存储。

于 2009-02-09T19:48:03.417 回答
4

唯一StringCodePage()可以返回 0 的方法是传入一个空白,从而返回其编译时代码页亲和性,或者传入一个将代码页 0 分配给其有效负载AnsiString的非空白。AnsiStringDelphiWideString用于 COM 字符串,StringCodePage()除了 plain 之外的任何字符串类型都不会返回 0 AnsiString。在 D2009 中,RTL 没有很好地将操作系统的实际运行时代码页存储到AnsiString有效负载中,因此它们通常包含 0 的编译时代码页亲和度。这在字符串转换方面是有用的,但不是很好明确的。这在后来的 Delphi 版本中得到了修复,因此AnsiString有效负载现在包含在运行时确定的实际操作系统代码页。

于 2012-07-06T15:46:58.880 回答