Почему в программах на Linux не нужно вызывать setlocale, а на Windows - нужно?

Почему в программах на C и C++ на Linux любые строки выводятся, как надо, а на Windows обязательно нужно вызывать метод setlocale, чтобы строки на определённом языке выводились правильно?


Ответы (1 шт):

Автор решения: gbg

Потому что в линуксе в терминале юникод и в исходниках такой же юникод.

А в русской венде консоль до сих пор по умолчанию работает в CP866, эмулируя 286 машину бухгалтера из 1994 года.

А редактор кода, которым вы пользуетесь, скорее всего работает в CP1251. Отсюда путаница и мусор вместо букв.

→ Ссылка