今天发现用securecrt登陆时,gcc编译出错时会出现乱码,但直接在主机的窗口界面下用Shell编译却没有乱码。查看了一下当时的错误描述,发现它的引号是中文引号,导致在SecureCRT中显示出错:

    main.c:1:1: error: expected identifier or '(' before numeric constant

在网上查了一下,可以通过修改LC_CTYPE=zh_CN.GBK解决这个问题,具体的方法有两个:

1. 通过export命令修改LC_CTYPE变量的值

    tianfang > export LC_CTYPE=zh_CN.GBK

    tianfang > gcc main.c

    main.c:1:1: error: expected identifier or '(' before numeric constant

    tianfang >

2. 修改/etc/sysconfig/language(大部分linux版本下这个文件叫/etc/sysconfig/i18n)中的变量设置,重新登陆后生效。

    #RC_LC_CTYPE=""

    RC_LC_CTYPE="zh_CN.GBK"

我个人比较推荐方法2。