[fpc-devel] fpc compiler wrong encoding in console output on Windows

Tomas Hajny XHajT03 at hajny.biz
Thu Aug 31 09:59:03 CEST 2023


On 2023-08-30 23:38, Ondrej Pokorny via fpc-devel wrote:
> Am 30.08.2023 um 20:21 schrieb Ondrej Pokorny via fpc-devel:

  .
  .
>> Having seen the outputs, I think that the compiler just ignores the 
>> source file encoding for {$MESSAGE} and {$NOTE}. It reads them always 
>> as ANSI and then converts them to DOS-whatever.
>> 
>> That would explain why UTF-8 byte stream is encoded into DOS CP.
>> 
>> So the fix should be quite easy - when {$MESSAGE} or {$NOTE} is read 
>> into a string, set the correct codepage of the string.
> 
> I was correct in my assumption and I was able to fix it:
> https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/482
> 
> On the other hand, when I read the $CODEPAGE docs:
> https://www.freepascal.org/docs-html/prog/progsu87.html#x95-940001.3.4
> There it is stated that only literal strings follow $CODEPAGE and the
> actual code must be in US-ASCII.
> 
> But you know: Delphi compatibility :) ...and there is no "illegal
> character" compiler error as it is for:
> 
> var
>   ä: string;
> 
> so one would expect {$note ä} to show up correctly.

Indeed. I'm glad that our discussion (although triggered by my mistake 
:-( ) led to a positive outcome at last. :-)

Tomas


More information about the fpc-devel mailing list