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