Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ setlocale не работает, почему?

krutoypro v Ученик (1), закрыт 1 год назад
сделал 3 способами, 1 способ: setlocale(LC_ALL, "Russian"); 2 способ: setlocale(LC_ALL, "Rus"); 3 способ: setlocale(LC_ALL, "Ru");

пишет каракули
Лучший ответ
Сергей Гений (60360) 2 года назад
Где-то в настройках компилятора копайте. Судя по тому, что выводится 8 кракозябр - у вас "тест" автоматом конвертируются в юникод (по два байта на букву). А выводить пытаетесь в однобайтной кодировке. Так что либо выводить нужно в юникоде, либо отключить конвертацию в настройках.
Остальные ответы
6 6 6 Ученик (230) 2 года назад
Существует несколько возможных причин, по которым функция setlocale() может не работать:

Некоторые компиляторы не поддерживают все языковые настройки. Убедитесь, что ваш компилятор поддерживает русский язык.

Некоторые операционные системы могут не иметь установленных русских локалей. Убедитесь, что ваша операционная система поддерживает русский язык и установлена соответствующая локаль.

Некоторые консольные шрифты могут не поддерживать кириллицу. Убедитесь, что выбранный вами консольный шрифт поддерживает кириллицу.

Возможно, вы используете не тот тип консоли, который поддерживает отображение русских символов. Например, в Windows командная строка не поддерживает отображение русских символов по умолчанию. В таком случае вы можете попробовать использовать другую консоль, например, PowerShell или Git Bash.

Если вы используете setlocale() вместе с функциями, которые не поддерживают многобайтовые символы, например, функциями printf() и scanf(), то это может привести к проблемам с отображением символов. В таком случае вы можете использовать функции, которые поддерживают многобайтовые символы, например, функции wprintf() и wscanf().
krutoypro vУченик (1) 2 года назад
у меня через debug работает
Похожие вопросы