Для тех, кто подписывается под девизом «лучше поздно, чем никогда», Visual Studio 2015 (версия 19 компилятора) теперь поддерживает это.
Новый ключ командной строки /source-charset
позволяет указать кодировку набора символов, используемую для интерпретации исходных файлов. Он принимает один параметр, который может быть либо IANA , либо именем набора символов ISO:
/source-charset:utf-8
или десятичный идентификатор конкретной кодовой страницы (с предшествующей точкой):
/source-charset:.65001
Официальная документация здесь , а также подробная статья, описывающая эти новые параметры в блоге команды Visual C ++.
Существует также дополнительный /execution-charset
переключатель , который работает точно так же, но управляет тем, как узкие символьные и строковые литералы генерируются в исполняемом файле. Наконец, есть комбинация клавиш /utf-8
, которая устанавливает как /source-charset:utf-8
, так и /execution-charset:utf-8
.
Эти параметры командной строки несовместимы со старыми директивами #pragma setlocale
и #pragma execution-character-set
и применяются глобально ко всем исходным файлам.
Для пользователей, использующих более старые версии компилятора, лучшим вариантом по-прежнему является сохранение исходных файлов в формате UTF-8 с спецификацией (как предлагали другие ответы, среда IDE может делать это при сохранении). Компилятор автоматически обнаружит это и будет вести себя соответствующим образом. Так же будет и GCC, который также принимает спецификацию в начале исходных файлов, не задыхаясь до смерти, делая этот подход функционально переносимым.