Windows上的Unicode更改控制台字体

时间:2014-05-18 18:35:30

标签: python ruby windows unicode fonts

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

1 个答案:

答案 0 :(得分:1)

  

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

他们不能也不会显示所有Unicode字符。默认的控制台字体又名“光栅字体”映射到.fon文件,其中包含您所在语言环境的DOS代码页中字符的字形。对于西欧安装,code page 850。你会在这个代码页中得到一些带重音的字母和其他非ASCII字符,但是更广泛的Unicode中的任何其他内容都将显示为?

实际上,即使您更改为矢量字体,当您运行使用MS C运行时标准库I / O函数(Python和Ruby执行)的实现的程序时,您仍然只能使用单个代码页。您可以选择更多的选项,因为您可以使用chcp更改为比“Raster Fonts”支持的更广泛的代码页,但您仍然无法以这种方式获取所有Unicode。

(原则上你应该能够chcp 65001获得UTF-8,但是Windows实现中存在严重错误,通常会使其无法使用。或者chcp 65000用于UTF-16,但由于这不是一个ASCII超集,它往往会破坏stdio应用程序,包括Python / Java等。)