Je souhaite afficher les symboles cyrilliques avec XDrawString()
, mais à l'écran, ils sont affichés avec un codage incorrect.Codage incorrect XDrawString
J'ai installé xfonts-cyrillic
dans mon système (ubuntu 14.04), mais toute police de xlsfonts
affiche un mauvais résultat.
Mon code (main.cpp):
#include <X11/Xlib.h>
#include <string.h>
int main(int, char**)
{
Display *d = XOpenDisplay(0);
Window r = DefaultRootWindow(d);
Window w = XCreateSimpleWindow(d, r, 0, 0, 256, 256, 0, 0, 0xffffff);
GC gc = DefaultGC(d, 0);
XMapRaised(d, w);
XSelectInput(d, w, ExposureMask);
Font font = XLoadFont(d, "9x15-cyrillic");
XSetFont(d, gc, font);
const char *msg = "тут текст"; // cyrillic symbols
while (1)
{
XEvent e;
XNextEvent(d, &e);
XDrawString(d, w, gc, 16, 16, msg, (int) strlen(msg));
}
}
Compile:
g++ -Wall -g -std=c++11 main.cpp -L/usr/lib/X11 -lX11 -o output
Mon résultat est:
Pourquoi dans le texte de la fenêtre de résultat est dans un mauvais encodage ? Qu'est-ce qui me manque?