Das war ziemlich interessant. Anscheinend übersetzt der Compiler das Omega von UTF-8 zu UNICODE, aber irgendwie bringt die libc es durcheinander.
Zunächst einmal: Der %c
-Format-Spezifizierer erwartet ein char
(auch im wprintf ) -version) müssen Sie %lc
(und damit %ls
für Strings) angeben.
Zweitens, wenn Sie Ihren Code so ausführen, wird das Gebietsschema auf C
gesetzt (es wird nicht automatisch aus der Umgebung übernommen). Sie müssen setlocale
mit einer leeren Zeichenfolge aufrufen, um das Gebietsschema aus der Umgebung zu übernehmen Die libc ist wieder glücklich.
Verwenden Sie {glib, libiconv, ICU}, um es vor der Ausgabe in UTF-8 zu konvertieren.