今天在利用arm板上移植的boa服务器上运行一个网页的时候,发现竟然不能显示中文,第一个反应是可能boa配置不好不支持中文,然而又觉得是浏览器不能解析中文的编码,上网一搜,貌似很少人遇到这问题,应该不是前者。然后发现开发板上的系统竟不能显示中文,即可能是开发板改掉原来网页的中文编码,令浏览器不能解码,也使中文编程乱码,但最后发现开发板没可能无端端将中文编码改掉,最后在大规模搜索原因之后,将网页代码的编码改成gb2312,网页正常显示!
原来不同的文件可能经过不同的编码,只有经过正确的编码才能正常显示,gd2312可以显示几千个中文,以及许多的特殊字符,例如在开发板里面的字符控制界面里只能显示ASCII码。编码类型非常之多,不同的编码支持不同的显示,但前提条件是需要有此编码的库的支持。不管需要编译与否,都必须把需要在网页显示的文件改为gb2312编码。如果是在cgi中,还需要设置程序环境:printf("%s\r\n\r\n","Content-type:text/html;charset=gb2312");和<metahttp-equiv="Content-Type" content="text/html; charset=gb2312"/> 一致。如果是html,则在<head>和</head>中加后一句即可。
在linux里创建文件的时候,默认编码系ASCII的,可使用命令$enca filename查看文件编码 ,如没有enca ,使用 $sudo apt-get install enca安装
修改编码的命令: iconv [选项] [文件]
选项:-f [格式] 指明变换前格式
-t [格式] 指明变换后的格式
例如: iconv -f utf-8 -tgb2312 aaa.html >bbb.html