Perché i simboli utf8 non possono essere stampati tramite le funzioni di glib?stampa utf8 in glib
Codice sorgente:
#include "glib.h"
#include <stdio.h>
int main() {
g_print("марко\n");
fprintf(stdout, "марко\n");
}
costruirlo in questo modo:
gcc main.c -o main $(pkg-config glib-2.0 --cflags --libs)
Si vedeva che glib non può stampare utf8 e fprintf può:
[[email protected] utf8test]$ ./main
?????
марко
Dopo setlocale (LC_ALL, "en_US.UTF-8") tutto funziona, ma senza di esso e con LANG = en_US.UTF-8 ./main non funziona. Perchè è questo? L'impostazione predefinita del sistema è en_US.UTF-8. –
Non devi esportare la variabile per essere visibile al processo secondario? Anche le variabili sono nominate come mostrato nella pagina man, prova 'export LC_ALL = en_US.utf8 &&./Main'; forse è anche sufficiente impostare LC_CTYPE solo per la stampa su stringa. – Mecki
È necessario esportare se si desidera salvare la variabile. Se lo vuoi solo per un'applicazione, è sufficiente metterlo prima del nome del programma. Ad ogni modo, ho esportato per LANG, LC_ALL e LC_CTYPE. Niente. Ancora non funziona. Strano ... –