今日看pidgin的DbusHowto并尝试运行了其中的c示例(通过dbus获得pidgin获得新im信息的示例),遇到了中文输出的问题。
凡是中文输出的都是”?”。我开始怀疑是编码的问题,难道中文不是UTF8的编码(系统 LANG=en_US.utf8)?
于是把输出写了一个文件 test,然后用file test,看到文件的确是utf8编码的,用vi打开也没有问题,此时我已经比较疑惑了,因为我平时写程序输出的时候很多时候用的也是中文。为什么这次输出不行呢?
于是我在google和baidu上找,尝试把char转换为wchar使用wprintf输出。但是不知道怎么回事,貌似编译的时候编译器检查到有什么问题为我在wchar相关的函数调用之前增加了
return __printf_chk (__USE_FORTIFY_LEVEL – 1, __fmt, __va_arg_pack ());
后来又找,发现在wchar相关函数调用之前一般都调用 setlocale
于是我在main函数里增加了这个调用(setlocale(LC_ALL, “en_US.utf8)),这个居然没有解决wchar的问题,但是中文输出的问题却好了。于是我试了用strstr来找中文,也是可用的。
虽然这个中文处理的问题解决了,但是疑惑更多了。why?why?why?
知道的越多感觉自己越是无知……
No related posts.





Recent Comments