html - Unicode html 缓冲区不适用于 libmicrohttpd

标签 html c http unicode server

我正在尝试创建一个服务器,它将以非英语语言提供页面,并且我正在使用以下代码测试 libmicrohttpd:

static int
answer_to_connection(void* cls, struct MHD_Connection* connection,
                     const char* url, const char* method,
                     const char* version, const char* upload_data,
                     size_t* upload_data_size, void** con_cls)
{
    char *page = "<html><head><meta charset='UTF-8'></head><body>हैलो यूनिकोड</body></html>";


    struct MHD_Response* response;
    int ret;

    response =
        MHD_create_response_from_buffer(strlen(page), (void *)page,
                                        MHD_RESPMEM_PERSISTENT);

    ret = MHD_queue_response(connection, MHD_HTTP_OK, response);
    MHD_destroy_response(response);

    return ret;
}

但它不起作用并给予 ?????浏览器上的字符。 谁能告诉我 libmicrohttpd 是否支持 Unicode,如果是那么如何?

最佳答案

正如我在评论中所写,您必须确保您的字符串采用 UTF-8 格式。标准 char 类型根据选定的代码页或本地格式格式化字符串,如果解释为 UTF-8,则会给出格式错误的字符。

如果您使用带有 u8 的 C11 编译器前缀字符串:

char *page = u8"<html><head><meta charset='UTF-8'></head><body>हैलो यूनिकोड</body></html>";

如果您的编译器不支持 UTF-8,您需要一个外部工具来使用十六进制转义或八进制等格式化字符串。

关于html - Unicode html 缓冲区不适用于 libmicrohttpd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41360391/

相关文章:

http - 如何从 Rust 发送超过 65535 个符号的 GET 请求?

http - 如何将udp mpeg ts流转换为http流?

html - 扩展位置绝对div outside overflow hidden div

java - Jsoup 抓取 HTML 动态内容

c++ - 获取 DLL 中导出函数的签名

c - 指定 C 程序在同一库中弹出 Python 程序的路径的好方法是什么?

javascript - 对详细信息标签的摘要部分中的复选框输入有疑问吗?

html - 为什么会有 2px 的垂直对齐差异 Bootstrap 选择和按钮?

c - 将 C MEX 文件转换为纯 C++ 时出错

ios - 在 iPad 或 iPhone 上无需 UI 发送电子邮件的替代方法