这个例子适用于我:
#include "fcgi_stdio.h"
int main(void) {
while(FCGI_Accept() >= 0) {
//Standard FastCGI Example Web-page
printf("Content-type: text/html\r\n"
"\r\n"
"<title>FactCGI Example</title>"
"<h1>Example Website</h1>"
"Some text...\r\n");
FCGI_Finish();
}
return 0;
}
但由于我的网页上需要UTF8字符,我以为我会使用html5格式化网页。这是我的骨架,它可以作为一个独立的文件呈现:
<!DOCTYPE html>
<html>
<head>
<title>FactCGI Example</title>
</head>
<body>
<h1>Example Website</h1>
<p>Some text...</p>
</body>
</html>
但是当把它折叠到fcgi脚本中时,如下所示,我在脚本加载时遇到“内部服务器错误”。
#include "fcgi_stdio.h"
int main(void) {
while(FCGI_Accept() >= 0) {
//Using html5 for the web-page
printf("<!DOCTYPE html>\r\n"
"<html>\r\n"
"\r\n"
"<head>\r\n"
"<title>FactCGI Example</title>\r\n"
"</head>\r\n"
"\r\n"
"<body>\r\n"
"<h1>Example Website</h1>\r\n"
"<p>Some text...</p>\r\n"
"</body>\r\n"
"\r\n"
"</html>\r\n");
FCGI_Finish();
}
return 0;
}
Fedora 23,httpd 2.8.18,Firefox 43.0.3,gcc 5.3.1-2
Google搜索表示所有fcgi,网页都以“Content-type:text / html”开头。
我犯了一些愚蠢的错误,或者fcgi不支持html5吗?
是否有其他方法可以使用fcgi启用UTF8支持?
答案 0 :(得分:0)
错误很可能是因为您的输出中没有Content-type HTTP标头。此外,如果要使用UTF-8,则应在内容类型标头中指定UTF-8作为字符集。但是,您不需要使用HTML5在您的网页中使用UTF-8;编码也可以用于较旧的HTML版本。
这是您添加了Content-type标头和UTF-8参数的代码。
#include "fcgi_stdio.h"
int main(void) {
while(FCGI_Accept() >= 0) {
//Using html5 for the web-page
printf("Content-type: text/html charset=utf-8\r\n"
"\r\n"
"<!DOCTYPE html>\r\n"
"<html>\r\n"
"\r\n"
"<head>\r\n"
"<title>FactCGI Example</title>\r\n"
"</head>\r\n"
"\r\n"
"<body>\r\n"
"<h1>Example Website</h1>\r\n"
"<p>Some text...</p>\r\n"
"</body>\r\n"
"\r\n"
"</html>\r\n");
FCGI_Finish();
}
return 0;
}