Wchar auf die Linux Konsole drucken?

7

Mein C-Programm wird unten eingefügt. In bash, das Programm print "char is", Ω wird nicht gedruckt. Mein Gebietsschema sind alle en_US.utf8.

%Vor%     
davy 08.10.2011, 08:10
quelle

3 Antworten

11

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.

%Vor%     
vstm 08.10.2011, 09:52
quelle
5

Alternativ zu der Antwort, die das Fixieren von LIBC vorschlägt, können Sie dies tun:

%Vor%     
RushPL 08.10.2011 10:15
quelle
4

Verwenden Sie {glib, libiconv, ICU}, um es vor der Ausgabe in UTF-8 zu konvertieren.

    
Ignacio Vazquez-Abrams 08.10.2011 08:13
quelle

Tags und Links