В 10-й Винде консоль якобы стала лучше. Я не заметил. По крайней мере она как UTF-8 не поддерживала, так и не поддерживает нормально.
Можно сказать ей `chcp 65001`, и тогда можно будет нормально выводить текст в UTF-8. Но ввести его при помощи, например, fgets как раньше нельзя было, так нельзя и сейчас.
Что характерно, если взять Cygwin или MinGW, и воспользоваться их `cat.exe`, то умная кошка знает, что имеет дело с долбанутой виндовской консолью, и всё поправляет как надо. Т.е. если запустить `cat | моя_программа.exe`, то в `stdin` уже пойдут строчки вполне себе в UTF-8.
Не знаю, м.б. это и не консоль, а стандартная библиотека в исполнении M$ в составе Visual C++. Пофиг. Всё равно разочарован. Когда они наконец это поправят?.. А если я чего-то не понял, то чего именно?..