Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Windows上的Unicode更改控制台字体_Python_Ruby_Windows_Unicode_Fonts - Fatal编程技术网

Python Windows上的Unicode更改控制台字体

Python Windows上的Unicode更改控制台字体,python,ruby,windows,unicode,fonts,Python,Ruby,Windows,Unicode,Fonts,我将unicode字符输出到Windows上的控制台,当我手动将字体更改为Lucidia Grande时,输出与预期一样。但我的问题是,Python、Ruby等如何。。。是否使用默认字体将unicode字符输出到Windows控制台?我以为默认字体不支持所有的unicode字符 Python、Ruby等如何。。。是否使用默认字体将unicode字符输出到Windows控制台 它们不能也不会显示所有Unicode字符。默认控制台字体(也称为“光栅字体”)映射到一个.fon文件,其中包含区域设置的D

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

Python、Ruby等如何。。。是否使用默认字体将unicode字符输出到Windows控制台

它们不能也不会显示所有Unicode字符。默认控制台字体(也称为“光栅字体”)映射到一个
.fon
文件,其中包含区域设置的DOS代码页中字符的字形。对于西欧安装,这是一个问题。在此代码页中,您确实会看到一些重音字母和其他非ASCII字符,但来自更宽Unicode的任何其他字符都将显示为

实际上,即使您更改为矢量字体,当您运行使用MS C运行时实现的标准库I/O函数(Python和Ruby就是这样做的)的程序时,您仍然被限制在一个代码页内。您有更多的选择,可以使用
chcp
更改为比“光栅字体”支持的更广泛的代码页,但您仍然无法通过这种方式获得所有Unicode


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

嗨,我使用了GetConsoleCp()函数,并发现代码页为850,正如您前面所说,它带有一些重音。那么,为什么当我试图把字母“á”去掉时,我会得到一个奇怪的字母?这里有一个屏幕截图链接,你可以看到。在这两个850之间应该是字母“á”,但你会看到它不是。这有什么办法吗?谢谢屏幕截图链接已断开,但我猜您的源代码本身可能是用错误的编码编译的。为了避免源代码编码问题,您可以将其写成eg
std::cout。谢谢您的回答。现在输出正确。只有一个问题。如何使用SetConsoleOutputCP()函数?因为每次我使用它时,代码页实际上并没有更改为我设置的页面。谢谢有关Python和Windows控制台之间交互的信息,请参阅。正如回答中所说,这与字体无关。