在C中使用FastCGI的HMTL5 / UTF8(fcgi_stdio.h)

时间:2016-01-09 03:53:42

标签: c html5 utf-8 fastcgi

这个例子适用于我:

#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支持?

1 个答案:

答案 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;
}