[fpc-pascal] Console Encoding in Windows (Local VS. UTF8)

Jonas Maebe jonas.maebe at elis.ugent.be
Tue Jul 9 11:13:53 CEST 2013


On 09 Jul 2013, at 11:02, Noah Silva wrote:

> 1. What encoding "should" I be writing to the terminal?

The console code page. You can get it using the following function:
   function GetConsoleOutputCP : UINT; stdcall; external 'kernel32'  
name 'GetConsoleOutputCP';

> from experimenting
> with text files using the cat command in powershell, it seems that  
> local
> ("ANSI") encoding should be used.  This makes sense since older  
> versions of
> windows only supported local encodings.

The ansi code page is (or at least can be) different, that's the the  
result of
   function GetACP:UINT; stdcall; external 'kernel32' name 'GetACP';

> 2. Is there any reason why writing out data in the local encoding  
> (with
> write statements, etc.) should get corrupted?  For example is some  
> level of
> the RTL assuming something about the encoding? (I don't think so,  
> but...)

Not in 2.6.x. In 2.7.x, every ansistring is tagged with a code page  
(the ansi code page by default) and the RTL will convert it to the  
console code page before writing it.

> 3. Is there a way to set the output to UTF8 so I can just write out  
> UTF8
> and be done with it?

I don't know.


Jonas



More information about the fpc-pascal mailing list