Ich versuche gerade einen Workaround: Der Verfasser des Tools meint, es sei einfacher, alle Parameter in eine UTF-8-kodierte Textdatei zu schreiben und *die* dem Programm mit einem speziellen Parameter zu übergeben. Ich probier’s gerade.
Spiele Programmierer hat geschrieben:Das "wchar_t*" direkt als "char*" interpretiert wurde, kann eigentlich nicht sein, denn dann wäre jedes zweite Zeichen in der Anwendung ein Null-Char wäre. ASCII würde dann auch nicht funktionieren.
Ja genau; das auf keinen Fall.
Falls du denkst, dass aus dem "wchar_t" jeweils die oberen 8 Bits abgeschnitten werden und die unteren 8 Bit als UTF-8 interpretiert werden, wäre das sehr einfach auszuprobieren, in dem du deinen in UTF-8 formatierten Text zeichenweise einfach in ein "wchar_t"-Array kopierst.
Das habe ich direkt nach Verfassen des vorherigen Posts gemacht, und das Ergebnis ist ein wenig aussagekräftiges
No wildcards allowed. Ich habe dann einfach mal Chinesisch reingefüttert, und die Meldung ist
Invalid filename encoding for å??æ°?.jpg. Es wäre ja hilfreich, wenn ich zumindest mal die Kommandozeile aus Sicht des Tools in eine Datei kriegen würde, aber das wird wohl nichts.
Etwas wahrscheinlicher halte ich es, dass die Anwendung Windows ANSI als UTF-8 interpretiert. Das sollte dann allerdings funktionieren, wenn du deinen UTF-8 String als ANSI übergibst.
Ich weiß nicht recht, wie das gemeint ist, aber man kann in der WinAPI nichts als ANSI übergeben. Alle ANSI-Parameter werden intern nach UTF-16 konvertiert und dann erst weitergereicht. Ich müsste herausfinden, ob das Tool die WinAPI oder CRT nutzt, um die Kommandozeile für
main() wieder in was anderes zu konvertieren, und wie die Konvertierung abläuft. Puh.
Ich weiß jetzt gerade nicht ganz sicher wie ANSI genau definiert ist und ich vermute, dass es auch von den Locale Einstellungen abhängt. Allerdings denke ich, dass die Konvertierung zu Unicode verlustfrei ablaufen sollte:
ANSI(Tatsächlich UTF-8) -> UTF-16 -> binär identischer ANSI (Tatsächlich UTF-8) String
Und da dann doch erstmal der Workaround mit der Datei :D