Salida de caracteres Unicode en el terminal de Windows

Durante la semana pasada estuve trabajando en unroguelike Juego en C ++ junto con un amigo. En su mayoría también aprender el idioma.

Estoy usando:

pdcursesWindows 7Estudio visual c ++

Para dar salidawchar_tEs donde quiera que quiera en la consola. He tenido éxito al omitir algunos caracteres Unicode como \ u263B (☻), pero otros como \ u2638 (☸) simplemente terminarán como signos de interrogación (?).

Aquí está el código relevante que utilizo para la salida.

// Container of room information

struct RoomInfo
{
    wchar_t * layout;
    int width;
    int height;
};

// The following function builds RoomInfo 

RoomInfo Room::examine(IActor * examinor)
{
    RoomInfo ri;
    ri.width = this->width;
    ri.height = this->height;
    ri.layout = new wchar_t[height * width];
    for(unsigned int y = 0; y < height; y++)
    {
        for(unsigned int x = 0; x < width; x++)
        {
            ri.layout[y*width + x] = L'\u263B'; // works
            //ri.layout[y*width + x] = L'\u2638'; // will not work
        }
    }
}

// The following function outputs RoomInfo

void CursesConsole::printRoom(RoomInfo room)
{
    int w = room.width;
    int h = room.height;

    WINDOW * mapw = newwin(h, w, 1, 0);
    for(int y = 0; y < h; y++)
    {
        wmove(mapw, y, 0);
        for(int x = 0; x < w; x++)
        {
            int c = y*w + x;
            waddch(mapw, room.layout[c]);
        }
    }

    wrefresh(mapw);
    delwin(mapw);
}

Por supuesto, podría recurrir a los aburridos personajes ANSI. Pero sería realmente increíble tener el conjunto completo de personajes de Unicode para jugar.

Para resumirlo:¿Cómo se asegura de que los caracteres Unicode se envíen correctamente?

Editar:

Ok, entonces me di cuenta de que mi codificación está funcionando correctamente. El problema es eseNecesito forzar al terminal para que cambie a una fuente más rica en Unicode. ¿Hay una forma multiplataforma para hacer esto? ¿Hay incluso una forma específica de Windows para hacer esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta