Вывод русских символов в программе C++

355
25 мая 2017, 11:13

Привет всем. Есть программа для игры и шрифты для вывода текста в меню берутся из самой игры, шрифты эти поддерживают русский язык точно, я проверял.

Когда я делаю какой-то пункт меню например, у меня вместо русских букв "каракули", а англ отображаются нормально. В чем может быть проблема? Уже даже wchar пробовал такой код:

const wchar_t str[] = L"wcstombs привет";
        char buffer[32];
        int ret;
        //printf("wchar_t string: %ls \n", str);
        ret = wcstombs(buffer, str, sizeof(buffer));
        if (ret == 32) buffer[31] = '\0';
        //if (ret) printf("multibyte string: %s \n", buffer);

И все равно wcstombs отображается, а "привет" нет. Писать названия пунктов меню нужно именно в char*. Помогите, пожалуйста!

Answer 1

попробуй в начале ф-ции main написать - setlocale(LC_ALL, "Russian");

Answer 2

Если писать названия пунктов меню нужно именно в char*, и при этом поддерживаются русские шрифты, у вас банально не совпадают кодировки. С большой вероятностью нужно передавать строки в utf8, для этого можно использовать префикс u в c++11: u"привет". Если не поможет, я бы рекомендовал скинуть строку с русским текстом в отдельный файл, затем читать её из файла и передавать дальше. При этом можно поэкспериментировать с различными кодировками в файле, и подобрать нужную. Или можно менять кодировки исходников, но это не надёжно.

Возможно, стоит полазить в исходниках, может быть где-то написано, какая кодировка нужна.

Ну и setlocale(LC_ALL, "Russian"); действительно лишним не должен быть.

READ ALSO
QT creator Linux ошибка компиляции

QT creator Linux ошибка компиляции

Пишу код в Qtcreator на Linux подключены библиотеки "safelib С" для работы bounds-checking при компиляции пишет ошибку

336
Xcode CИ printf не работает без переноса строки

Xcode CИ printf не работает без переноса строки

Наблюдается только в среде xcode , в языках C и С++, вывод происходит только если дописывать \n или endl в конце каждого выводаНапример в таком коде...

294
Как сделать подмену двух номеров на сайте

Как сделать подмену двух номеров на сайте

Как сделать подмену двух номеров на сайте используя динамический коллтрекинг Mango Office?

349
работа js в файле, вставленном через “.load”

работа js в файле, вставленном через “.load”

Столкнулся с проблемой, если вставляю файл на страницу через такую конструкцию:

231