Windows上的Unicode更改控制台字体

我正在输出unicode字符到控制台上的Windows和输出如预期当我手动更改字体Lucidia格兰德。 但我的问题是,如何Python,Ruby等…输出unicode字符到Windows控制台使用默认字体? 我以为默认的字体不支持所有的Unicode字符?

如何Python,Ruby等…输出unicode字符到Windows控制台使用默认字体?

他们不能也不显示所有的Unicode字符。 默认控制台字体aka“Raster Fonts”映射到一个.fon文件,该文件带有字形,用于在您的语言环境的DOS代码页中的字符。 对于代码页850的西欧安装。 在这个代码页中,你会得到一些重音字母和其他非ASCII字符,但是其他更宽的Unicode字符将会显示为?

实际上,即使您更改为矢量字体,当您运行使用标准库I / O函数(Python和Ruby)的MS C运行时实现的程序时,您仍然仅限于单个代码页。 你可以选择更多的选择,因为你可以使用chcp来改变更多的代码页,而不是“光栅字体”所支持的,但是你仍然无法以这种方式得到所有的Unicode。

(原则上,你应该可以通过chcp 65001来获得UTF-8,但是在Windows的实现中有严重的错误,通常使得它不可用,或者对于UTF-16来说chcp 65000 ,但是这不是一个ASCII超集打破包括Python / Java等的stdio应用程序)