Состоит он вот в чём:
- создадим (напишем) платформенно независимое консольное приложение ... "Привет мир!"
- на С или С++ ... используя либо Boost (как в теме откуда переплыл вопрос), или Apache Portable Runtime (APR) ... , или любой инструмент переносимого программирования - проблема будет наблюдаться везде!
- но в программе будут выводиться русскоязычные строки:
Код: Выделить всё
std::cout << "Привет мир!" << std::endl;
- если перенести такое приложение в MS Visual Studio (а для чего мы тогда уродовались с Boost? ) + добиться нормальной сборки проекта (указанием путей инклудов и бинарных библиотек Boost), то программа может быть скомпилирована...
- но при запуске её в консоли - получим кракозябры ... текст UTF-8, который прекрасно видится как надо в редакторе MS Visual Studio, при выводе в тупую Windows консоль, ожидающую свою уродливую кодировку CP-1251, отображается бредовым набором символов.
Как?
Проблема здесь не в переносимости UNIX <-> Windows, проблема здесь чисто Windows, потому как если такое приложение "Привет мир!" набить в пустом консольном проекте Windows, то получится такое же уродство. Но меня мало занимают проблемы разбирательства с Windows-уродствами ... пусть они "сами хоронят своих мертвецов".
Вопрос маленький и конкретный, состоящий в том: как запустить консольное приложение в Windows с отображением русского текста?
И с тем, чтобы явно в код не вписывать всякие Windows-ные штучки-дрючки, по типу явного преобразования строк в CP-1251 ... что не будет работать ни в одной другой системе.