CodeBlocks и русские буквы

Недавно захотелось допилить старые проекты, написанные в CodeBlocks 2017. Обнаружилось, что вышел CodeBlocks 2020 Pandemic Edition.
Я пишу вот так:

	font->DrawString(0.0f, 40.0f, (char*)" !\"#$%&'()*+,-./");
	font->DrawString(0.0f, 60.0f, (char*)"0123456789:;<=>?");
	font->DrawString(0.0f, 80.0f, (char*)"@ABCDEFGHIJKLMNO");
	font->DrawString(0.0f, 100.0f, (char*)"PQRSTUVWXYZ[\\]^_");
	font->DrawString(0.0f, 120.0f, (char*)"`abcdefghijklmno");
	font->DrawString(0.0f, 140.0f, (char*)"pqrstuvwxyz{|}~");
	font->DrawString(0.0f, 160.0f, (char*)"АБВГДЕЁЖЗИЙКЛМНОП");
	font->DrawString(0.0f, 180.0f, (char*)"РСТУФХЦЧШЩЪЫЬЭЮЯ");
	font->DrawString(0.0f, 200.0f, (char*)"абвгдеёжзийклмноп");
	font->DrawString(0.0f, 220.0f, (char*)"рстуфхцчшщъыьэюя");

потом сохраняю проект, закрываю его, открываю заново, а там получается это:
Screenshot_trim
Однако, если перекомпилировать код в таком виде, то в самой программе русские буквы нормально видно.
А как сделать, чтобы в редакторе буквы нормально отображались? Где настроить кодировку?
В 2017-ом такого косяка не было. Там только в комментариях некоторые русские буквы слетали.

Если когда

то может быть надо кодировку по умолчанию указать.

http://forums.codeblocks.org/index.php?topic=9167.0

Settings -> Editor -> General settings -> Font -> Default encoding

нету такого

Наверно перенесли куда-то :man_shrugging:

Вот же Encoding settings сверху.


В хороших современных программах с кучей настроек можно просто ввести что надо )

image

а, во, нашел


теперь работает

Последняя хорошая современная программа, которую помню, это был WinAmp 5.0.5 (с кряком, разумеется).
И LightAlloy 3.2

Но работает вот так:


Какую кодировку надо выбрать?

А font это что тут?

Мой класс-обёртка для загрузки текстуры и вывода глифов.
Там кода на пару строчек.

Так а что он вызывает в итоге?

Если там Юникод, то для UTF-16 вроде можно написать u"фыва", или на винде wchar_t + L"фыва" String literal - cppreference.com

А файл с кодом скорее всего проще сохранить в UTF-8.

void CFont::Start()
{
    glEnable(GL_TEXTURE_2D);
	//glDisable(GL_LIGHTING);
    glDisable(GL_DEPTH_TEST);
    glEnable(GL_ALPHA_TEST);
    glAlphaFunc(GL_GREATER, 0.0f);

    glBindTexture(GL_TEXTURE_2D, textureId);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    glOrtho(0.0, (double)orthoScreenWidth, 0.0, (double)orthoScreenHeight, -1.0, 1.0);

    glMatrixMode(GL_MODELVIEW);
}

void CFont::Finish()
{
    glBindTexture(GL_TEXTURE_2D, 0);

    glDisable(GL_TEXTURE_2D);
    glDisable(GL_ALPHA_TEST);
    glEnable(GL_DEPTH_TEST);
	//glEnable(GL_LIGHTING);
}

void CFont::DrawString(float xPos, float yPos, char* sText)
{
    glLoadIdentity();

    glTranslatef(xPos, (GLfloat)orthoScreenHeight - 20.0f - yPos, 0.0f);
    glListBase(glyphLists);

    glCallLists(strlen(sText), GL_UNSIGNED_BYTE, sText);
}

Текстурные шрифты OpenGL вообще не поддерживают никакой юникод. Только стандартная таблица ASCII.
Для вывода других символов надо пилить дикие костыли, либо использовать библиотеки.

Даже когда пишешь комментарии на русском, он автоматически пересохраняет в UTF-8 :unamused: В старом такой похабщины не было. Там только в комментариях некоторые русские буквы слетали.

Во! Поставил As default encoding (bypassing C::B’s auto-detection), а кодировку поставил default и всё работает.