the large hypertextual fontawesome font engine awesome anatomy delphi unicode character-encoding delphi-2009 codepages

delphi - large - fontawesome io 3.2 1 icons



¿Qué es Codepage 0? (2)

Estoy usando la función Delphi

StringCodePage

Lo llamo en una cadena devuelta por una función COM (Acrobat Annotation getContents - vea mis otras publicaciones) y devuelve 0.

¿Qué es 0? Ansi?


La página de códigos 0 es CP_ACP, página actual de códigos ANSI de Windows.

Desde Windows.pas:

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

Desde MSDN :

CP_ACP

El sistema actual de la página de códigos ANSI de Windows. Este valor puede ser diferente en diferentes computadoras, incluso en la misma red. Se puede cambiar en la misma computadora, lo que hace que los datos almacenados se corrompan irrecuperablemente. Este valor solo está destinado a uso temporal y el almacenamiento permanente debe realizarse con UTF-16 o UTF-8 si es posible.


La única forma en que StringCodePage() puede devolver 0 es si está pasando un AnsiString en blanco, devolviendo así su afinidad de página de códigos en tiempo de compilación, o está pasando un AnsiString no en blanco que tiene una página de códigos 0 asignada a su carga útil. Delphi usa WideString para cadenas COM, y StringCodePage() no devolverá 0 para ningún tipo de cadena excepto AnsiString simple. En D2009, RTL no hizo un buen trabajo almacenando la página de códigos de ejecución del sistema operativo en cargas útiles de AnsiString , por lo que comúnmente contenían la afinidad de página de códigos en tiempo de compilación 0. Eso es funcional en lo que respecta a las conversiones de cadenas, pero no muy explícito. Eso se solucionó en versiones posteriores de Delphi, por AnsiString cargas útiles de AnsiString ahora contienen la página de códigos del sistema operativo real que se determina en tiempo de ejecución.