D будет выдавать UTF-8 независимо от операционной системы. Как будет интерпретироваться вывод, зависит от того, как он отображается. В этом конкретном случае похоже, что ваша среда IDE интерпретирует вывод так, как если бы он был закодирован в кодировке Windows-1252.
Для стандартной консоли Windows вы можете изменить выходную кодировку, вызвав SetConsoleOutputCP(65001)
, но обратите внимание, что это может иметь некоторые нежелательные побочные эффекты (вы должны восстановить кодовую страницу до выхода вашей прогамы, а пакетные файлы могут не работать во время консоли выходная кодовая страница установлена на 65001).
Я чувствую себя неудобно, меняя глобальные настройки моей консоли. Разве нет более чистого решения? Почему C++ или Java-Ouput не затронуты этой проблемой? – itmuckel
'SetConsoleOutputCP' не является глобальным параметром, он меняет настройку для текущего окна. –
C++ и Java, вероятно, не выводят UTF-8. –