编译cppcms官方文档里“Hello World” 例子:
cppcms.com/wikipp/en/page/cppcms_1x_tut_hello
编译完成后执行 hello -c config.js
结果出现错误异常提示'Invalid or unsupported char set : utf-8"
周围没人遇到过这个问题,上网一搜也没有什么结果,哪怕用google英文。
急死人了。
不过冷静下来经过排查,发现这个和自己的程序没有关系,而是config.js的问题,异常在刚开始读取config.js的时候就发生了。
config.js里的内容肯定没问题,只可能是.js文本保存格式有问题,导致cppcms程序不识别。
那也就是我的系统真的不支持utf-8?
我的ubuntu系统和周围同事装得差不多,也不记得自己改什么配置了,utf-8这么基本的字符集还能出问题?
于是网上搜了下关于linux 字符集的基本知识,然后在本机运行
$ locale
结果是
LANG=en_US.UTF-8
LANGUAGE=”C”
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
晕,这都是些什么啊!再看看同事的电脑:
LANG=en_US.UTF-8
LANGUAGE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
显然我们的UTF-8环境不对,那么怎么修改呢?
$ sudo vim /etc/environmen
在里面添加:
LANG=en_US.UTF-8
LANGUAGE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
这三行就够了,当然把其他几项全部添加上也行,这里是英文UTF-8, 如果相知吃中文环境,en_US换成zh_CN,具体自己去查。
保存配置文件,然后重启系统
大功告成,问题解决。