爲什麼utf8符號不能通過glib函數打印?在glib中打印utf8
的源代碼:
#include "glib.h"
#include <stdio.h>
int main() {
g_print("марко\n");
fprintf(stdout, "марко\n");
}
建立這樣的:
gcc main.c -o main $(pkg-config glib-2.0 --cflags --libs)
你可以看到,油腔滑調不能打印UTF8和fprintf可以:
[[email protected] utf8test]$ ./main
?????
марко
在setlocale(LC_ALL,「en_US.UTF-8」)之後一切正常,但沒有它並且LANG = en_US.UTF-8 ./main,它不起作用。爲什麼是這樣? 系統默認值是en_US.UTF-8。 – 2010-06-22 11:29:40
您是否必須將變量導出到子流程纔可見?此外,變量的名稱如手冊頁所示,請嘗試'export LC_ALL = en_US.utf8 &&。/ main';也許僅爲字符串打印設置LC_CTYPE就足夠了。 – Mecki 2010-06-22 12:08:34
如果您想'保存'變量,則需要導出。如果您只想爲一個應用程序使用它,則只需將其放在程序名稱之前即可。無論如何,我已經完成了LANG,LC_ALL和LC_CTYPE的導出。沒有。仍然不工作。奇怪... – 2010-06-22 13:25:35