2016-12-28 2 views
0

ich einen Server erstellen bin versucht, die Server-Seiten in nicht englischer Sprache, und ich bin Prüfung libmicrohttpd mit diesem Code:Unicode HTML-Puffer nicht mit libmicrohttpd arbeitet

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

Aber es funktioniert nicht und geben ?? ??? Zeichen im Browser. Kann mir jemand sagen, ob libmicrohttpd Unicode unterstützt, wenn ja wie?

+0

ich tat das, aber kein Glück. –

+0

Schauen Sie hier: http://stackoverflow.com/questions/1696619/displaying-unicode-symbols-in-html. Stellen Sie sicher, dass Ihre Zeichenfolge in UTF-8 formatiert ist. Wenn Sie einen C11-Compiler Präfixzeichenfolge verwenden mit 'u8' wie:' char * page = U8" हैलो यूनिकोड „;' –

+0

ja, das funktioniert !! !! Danke, füge das als Antwort hinzu, ich werde als richtig markieren –

Antwort

2

Wie ich bereits im Kommentar geschrieben habe, müssen Sie sicher sein, dass Ihre Zeichenfolge in UTF-8 formatiert ist. Standard char Typ formatiert Zeichenfolge gemäß der ausgewählten Codepage oder lokal, die schlecht formatierte Zeichen ergibt, wenn sie als UTF-8 interpretiert wird.

Wenn Sie einen C11-Compiler Präfixzeichenfolge verwenden mit u8 als:

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

Wenn Ihr Compiler nicht unterstützt UTF-8 Sie ein externes Tool benötigen, die die Zeichenfolge mit hex entkommen oder Oktal formatiert oder dergleichen.

Verwandte Themen