Autor Beitrag
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 04.09.16 18:40 
Hallo zusammen,

heute mal wieder eine konzeptionelle Frage. Welches Encoding würde man für (C-Style) Strings im Interface einer modernen Library erwarten? Es geht mir dabei auch darum wie gut sich das dann in anderen Sprachen abbilden lässt, also in C/C++, C# (irgendwas mit Marshalling?), Python, Rust, wasauchimmer.
Meine Strings sind intern UnicodeStrings, also definitiv nicht nur in einer Ansi-Codepage.

Würde man eher UTF16 (also wchar_t *) oder UTF-8 (also char *?) erwarten? Ich persönlich tendiere ja eher zu UTF-8 weil das irgendwie überall außer in der WinAPI Standard ist und auf *nix-Systemen auch gleich noch die DefaultSystemCodePage ist, andererseits haben wir auf der Pascal-Seite ja schönen Sprachsupport für PWideChar und alles was man drumrum braucht. Vielleicht haben das auch andere?

Jaja, ich weiß, das ist schon irgendwo auch einfach Geschmackssache, aber wenn ich sowieso Support-funktionen schreibe, dann auch gleich richtig ;)

Viele Grüße,

Martok

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 05.09.16 07:12 
Ich vermute mal du benutzt Lazarus/FPC? Da das intern UTF-8 nutzt, bietet sich das natürlich an...

Unterstützen tun die meisten Sprachen auch UTF-16, aber es ist eben wie du schon sagst auf anderen Plattformen nicht üblich. Falls das Ziel nicht auch andere Plattformen als Windows sind, würde ich aber eher den dortigen Standard UTF-16 benutzen.
Martok Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 05.09.16 16:34 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ich vermute mal du benutzt Lazarus/FPC?
Ja.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Da das intern UTF-8 nutzt, bietet sich das natürlich an...
UnicodeString ist UTF16, es gibt aber einen nativen UTF8String, ja.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Unterstützen tun die meisten Sprachen auch UTF-16, aber es ist eben wie du schon sagst auf anderen Plattformen nicht üblich. Falls das Ziel nicht auch andere Plattformen als Windows sind, würde ich aber eher den dortigen Standard UTF-16 benutzen.
Doch, ist es schon. Genau das meinte ich nämlich, aus der WinAPI und COM selbst kenne ich überall wchar * oder BSTR, aber anderswo sieht das weniger so aus...

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."