Заголовок окна экрана UTF8

Я пытался установить заголовок окна UTF8 в моем проекте SDL все, что я вижу, это ???? и я понятия не имею, как с этим бороться. Вот мой пример кода:

#include "SDL/SDL.h"

int main( int argc, char* args[] )
{
    int screen_width = 800;
    int screen_hight = 600;
    int screen_bpp = 32;
    SDL_Surface *screen = NULL;
        SDL_Init( SDL_INIT_EVERYTHING );
    screen = SDL_SetVideoMode( screen_width, screen_hight, screen_bpp, SDL_SWSURFACE  );

        // Set the window caption
        SDL_WM_SetCaption( "تستی", NULL ); //utf8 not working
        SDL_Delay(5000);
        SDL_Flip(screen);

}

1 ответ

Ввод его таким образом не будет работать, если только с помощью какого-либо расширения компилятора. Вы можете преобразовать его в кодовые единицы UTF-8 (например, здесь):

D8 AA D8 B3 D8 AA DB 8C

И затем поместите это в символьный литерал, используя шестнадцатеричные escape-символы\xHH где HH это шестнадцатеричное значение):

SDL_WM_SetCaption( "\xD8\xAA\xD8\xB3\xD8\xAA\xDB\x8C", NULL );

Это должно работать, если ваша система может отображать это.

Очевидно, что это утомительно, если у вас много строк UTF-8, вы можете поместить их в файл в кодировке UTF-8 и прочитать оттуда, или посмотреть, поддерживает ли ваш компилятор литералы UTF-8 (они выглядят так: u8"تستی").

Другие вопросы по тегам