String D语言无法在Windows上显示德语Umlaute?

String D语言无法在Windows上显示德语Umlaute?,string,encoding,character-encoding,cross-platform,d,String,Encoding,Character Encoding,Cross Platform,D,如您所见,D无法输出德语Umlaute。至少在Windows上是这样。在Linux或BSD上,相同的程序输出我保存的字符串 我已经尝试了wstring或dstring,但输出是相同的 我做错了什么?D将输出UTF-8,而不考虑操作系统。如何解释输出取决于它的显示方式。在这种情况下,您的IDE似乎在解释输出,就好像它是用Windows-1252编码的一样 对于标准Windows控制台,您可以通过调用SetConsoleOutputCP(65001)来更改输出编码,但请注意,这可能会产生一些不希望的

如您所见,D无法输出德语Umlaute。至少在Windows上是这样。在Linux或BSD上,相同的程序输出我保存的字符串

我已经尝试了wstring或dstring,但输出是相同的


我做错了什么?

D将输出UTF-8,而不考虑操作系统。如何解释输出取决于它的显示方式。在这种情况下,您的IDE似乎在解释输出,就好像它是用Windows-1252编码的一样


对于标准Windows控制台,您可以通过调用
SetConsoleOutputCP(65001)
来更改输出编码,但请注意,这可能会产生一些不希望的副作用(您应该在程序退出之前还原代码页,当控制台输出代码页设置为65001时,批处理文件可能不会运行).

CyberShadows帖子引导我找到了一个可以接受的答案。:-)

在Eclipse中,可以在不更改操作系统全局设置的情况下更改输出编码。 转到运行-->运行配置。。。

在这里,选择公共选项卡并将编码更改为UTF-8。现在,德国Umlaute显示正确。至少在Eclipse中是这样。:-)

另一种可能性是使用。它是一个基于Cygwin的外壳,输出UTF-8:

更改控制台的全局设置让我感到不舒服。难道没有更干净的解决办法吗?为什么C++或java输出不受这个问题的影响?<代码> SETCONSOLUEPUTCP/<代码>不是全局设置,它改变了当前窗口的设置。C++和java可能不输出UTF-8。java的运行时最可能检查什么是底层操作系统,并调整输出编码…也许福布斯也应该这样做。