Я использую функцию DelphiЧто такое Codepage 0?
StringCodePage
я называю его на строки, возвращаемой функцией COM (Acrobat аннотаций getContents - см другие мои записи) и возвращает 0.
Что такое 0? Анси?
Я использую функцию DelphiЧто такое Codepage 0?
StringCodePage
я называю его на строки, возвращаемой функцией COM (Acrobat аннотаций getContents - см другие мои записи) и возвращает 0.
Что такое 0? Анси?
Страница с кодом 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.
Единственный способ StringCodePage()
может возвращать 0, если вы передаете в пустом AnsiString
, таким образом, возвращая его во время компиляции сродства кодовой страницы, или проходите в непробельных AnsiString
, который имеет кодовый 0 назначенные полезную нагрузку. Delphi использует WideString
для COM-строк, а StringCodePage()
не будет возвращать 0 для любого типа строк, кроме AnsiString
. В D2009 RTL не очень хорошо справлялся с сохранением фактической кодовой страницы ОС в AnsiString
, поэтому они обычно содержали сродство кодовой страницы компиляции до 0. Это функционально применительно к преобразованиям строк, но это не очень явным. Это было исправлено в более поздних версиях Delphi, так что AnsiString
полезная нагрузка теперь содержит фактическую кодовую страницу ОС, которая определяется во время выполнения.
Единственный способ, которым 'StringCodePage()' может возвращать 0, - это если вы передаете ему пустую 'AnsiString' или непустую' AnsiString' с кодовой страницей 0 в своей полезной нагрузке. Delphi использует 'WideString' для COM-строк. В D2009 RTL не выполнял очень хорошую работу по хранению фактических значений кодовой страницы в полезных данных AnsiString, поэтому он обычно имел 0, поскольку это сродство кодовой страницы компиляции, а не близость времени выполнения. Это было исправлено в более поздних версиях Delphi. –
Не могли бы вы разместить это в качестве ответа? –
Он был опубликован. –