Почему в программах на Linux не нужно вызывать setlocale, а на Windows - нужно?
Почему в программах на C и C++ на Linux любые строки выводятся, как надо, а на Windows обязательно нужно вызывать метод setlocale, чтобы строки на определённом языке выводились правильно?
Ответы (1 шт):
Автор решения: gbg
→ Ссылка
Потому что в линуксе в терминале юникод и в исходниках такой же юникод.
А в русской венде консоль до сих пор по умолчанию работает в CP866, эмулируя 286 машину бухгалтера из 1994 года.
А редактор кода, которым вы пользуетесь, скорее всего работает в CP1251. Отсюда путаница и мусор вместо букв.