我正在尝试创建一个服务器,它将以非英语语言服务页面,我正在使用以下代码测试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,如果是,那么如何?
答案 0 :(得分:2)
正如我在评论中写的那样,你必须确保你的字符串格式化为UTF-8。标准char
类型根据所选代码页或本地格式设置字符串,如果解释为UTF-8,则会生成错误的字符。
如果您使用带有u8
的C11编译器前缀字符串作为:
char *page = u8"<html><head><meta charset='UTF-8'></head><body>हैलो यूनिकोड</body></html>";
如果您的编译器不支持UTF-8,您需要一个外部工具,使用十六进制转义或八进制等格式化字符串。