快速业务通道

linux下curses中文乱码问题解决

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-27

今天心血来潮,在linux下试了一把curses

搞了个hello world 试了下,界面还好,但输出中文的时候就乱码了

查了写资料发现有两个地方需要注意:

1 字符集的设置,源代码中要#include <locale.h>,同时在main函数中 setlocale(LC_ALL,"");

参见:http://blog.sina.com.cn/s/blog_618786dd0100qjxu.html

2 编译时要选择宽字符集版本 gcc -o hello hello.c –lcursesw 而不是gcc -o hello hello.c –lcurses

参见:http://www.linuxsir.org/bbs/showthread.php?t=267078

具体是从网上找的资料如下:

,要在程序的开始调用setlocale函数来设置locale,如果使用系统默认的locale,就这样setlocale(LC_ALL,"");

对于UTF-8的字符和字符串,就可以像使用普通的字符和字符串那样使用了,不过对于strlen,要用wcslen()来代替(好像如果想要看一下一个字符串要占用多少列的空间,也要用wcswidth(),不过我不确定,我作了几次实验反回的都是-1,希望知道的朋友回个贴讲一下,谢谢了).
然后在编译时也要注意,不要用gcc a.c -lncurses,而要用gcc a.c -lncursesw,ncursesw是ncurses支持宽字符(wide character)的版本.这样整个程序就可以使用UTF-8编码的任意字符了.

linux curses库使用:mark之,近期搞搞~~

http://wenku.baidu.com/view/264d99d6b14e852458fb57a7.html

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号