2015-10-23 2 views
2

enter image description hereЯзык D не отображает немецкий Umlaute в Windows?

Как вы можете видеть, D не выводит немецкий Umlaute. По крайней мере, в Windows. В Linux или BSD одна и та же программа выводит строку, как я ее сохранил.

Я уже пробовал wstring или dstring, но выход такой же.

Что я делаю неправильно?

ответ

4

D будет выдавать UTF-8 независимо от операционной системы. Как будет интерпретироваться вывод, зависит от того, как он отображается. В этом конкретном случае похоже, что ваша среда IDE интерпретирует вывод так, как если бы он был закодирован в кодировке Windows-1252.

Для стандартной консоли Windows вы можете изменить выходную кодировку, вызвав SetConsoleOutputCP(65001), но обратите внимание, что это может иметь некоторые нежелательные побочные эффекты (вы должны восстановить кодовую страницу до выхода вашей прогамы, а пакетные файлы могут не работать во время консоли выходная кодовая страница установлена ​​на 65001).

+0

Я чувствую себя неудобно, меняя глобальные настройки моей консоли. Разве нет более чистого решения? Почему C++ или Java-Ouput не затронуты этой проблемой? – itmuckel

+1

'SetConsoleOutputCP' не является глобальным параметром, он меняет настройку для текущего окна. –

+0

C++ и Java, вероятно, не выводят UTF-8. –

4

Сообщение CyberShadows направило меня к приемлемому ответу. :-)

В Eclipse можно изменить выходную кодировку без изменения глобальных настроек ОС. Перейти к Run -> Run-конфигурации ... enter image description here

Там выберите Common-Tab и изменить кодировку UTF-8. Теперь немецкий Umlaute отображается правильно. По крайней мере, в Eclipse. :-)

Другая возможность заключается в использовании https://babun.github.io/. Это оболочка на основе Cygwin, которая выводит UTF-8: enter image description here

Смежные вопросы