问题描述
环境是linux下,webserver使用的是thttpd,cgi程序使用c语言。预期目标为:某连接指向一个cgi程序,点击该连接效果为该cgi会调用execl执行另一个程序,将该程序执行结果输出到浏览器上。问题为:使用Content-Type:text/plain这个MIME头,在本机通过,用另一台机子测试结果为:chrome浏览器通过,而IE和firefox却是弹出下载该cgi的对话框。将MIME头改为Content-Type:text/html,都通过,但是html格式会去除多余空格和回车符,所以显示为乱码。更改cgi权限,加Content-Disposition:inline都试过均无效。当然也可能格式不对什么的。有知道怎么解决的,碰到过类似情况的,能给出解决方案绕过此bug的,小弟跪谢了,亲哥们。
解决方案
解决方案二:
对执行结果进行转义替换呗,空格用 换,回车符用<br/>换。
解决方案三:
引用1楼theforever的回复:
对执行结果进行转义替换呗,空格用&nbsp;换,回车符用<br/>换。
这个在html中使用<pre>标签就可以使其不除去多余空格和换行符。但是问题是执行另一个程序的结果,它是直接输出到了标准输出上,没法处理的。
解决方案四:
而那个程序是常驻进程的,一直执行,每隔三秒就会打印一些信息,要输出到网页。所以这个输出到文件再读出来处理好像也不太好弄。
解决方案五:
关于乱码,我的经验是统一使用utf-8首先,thttpd启动的时候设置为utf-8其次,在编写cgi的时候加入charset=“utf-8”最后在编辑网页以及cgi源文件的时候保存为utf-8格式
时间: 2024-12-27 04:40:20