Michael, because I cannot comment on a closed issue report I post my answer to https://bugs.freepascal.org/view.php?id=31746#c100091 here:
I don't think what you write is correct. As far as I can see in the
code of Delphi Berlin: Delphi uses always the defaultsystemcodepage for text files, regardless of what the file is used for.
What do you mean? I checked both Berlin and Tokyo and in "function TextOpen(var t: TTextRec): Integer;" in unit System you see that if the text file is used for console input/output the CodePage is GetConsoleOutputCP/GetConsoleCP whereas if the text file is used for other purposes it uses DefaultSystemCodePage. (Search for "if GetFileType(t.Handle) = 2 then"; 2=FILE_TYPE_CHAR).
It is correct that the patch doesn't exactly reflect Delphi behavior - it sets the DefaultSystemCodePage only for standard output and not all text files. It mises the Delphi fallback to DefaultSystemCodePage.
FPC uses a different mechanism which allows you to write files in a
different code page.
Exactly. The issue report is about the fact that the mechanism is different - which puzzled me a lot. I just didn't understand why I see nonsense in Notepad when I open the output from an FPC application whereas output from Delphi shows fine.
Some background: I convinced one of my customers that FPC is better than Delphi (I have known it for a long time already) and migrated one of my console programs for him from Delphi to FPC and I didn't understand why FPC "corrupts" the output to file whereas the output to console is OK. I wasn't aware that the FPC output was in console codepage even if you redirect the output to a file (you don't really use console codepage for files, don't you).
I accept that this behavior is by design and wanted - I hadn't found any information on this Delphi incompatibility before I started checking the issue. So at least the issue report can be some kind of information source even if you won't fix it - hopefully Google files it correctly :)
You can do your own detection and set the code page accordingly
This is exactly what I found out and what I posted as workaround in "Steps To Reproduce" :)
Ondrej