为什么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