[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