好的,我想在我的WindowsXP控制台中打印一个字符串。 有几个字符的控制台不能打印,所以我必须编码到我的标准输出编码是“cp437”。但打印编码字符串时,“ß”将打印为“\xe1”。在解码回unicode并打印字符串之后,我得到了我想要的输出。但这感觉有点不对。如何正确地打印字符串并获取?对于不可打印字符?在
>>>var
'Bla \u2013 großes'
>>>print(var)
UnicodeEncodeError: 'charmap' codec can't encode character '\u2013'
>>>var.encode('cp437', 'replace')
b'Bla ? gro\xe1es'
>>>print(var.encode('cp437', 'replace'))
b'Bla ? gro\xe1es'
>>>var.encode('cp437', 'replace').decode('cp437')
'Bla ? großes'
>>>print(var.encode('cp437', 'replace').decode('cp437'))
Bla ? großes
编辑: @马克·兰瑟姆:因为我打印了很多,所以我觉得代码很臃肿:/
@eryksun:很抱歉我在找什么。谢谢!在
要打印无法使用控制台代码页表示的Unicode字符,可以使用使用Unicode API的^{} Python package 直接从Windows控制台读/写Unicode:
将其保存到
^{pr2}$test_unicode.py
文件,然后运行它:你应该看到:
作为首选方案,您可以使用
run
模块(包含在软件包中),在Windows控制台中运行一个启用了Unicode支持的普通脚本:要安装
win_unicode_console
模块,请运行:请确保选择的字体能够在Windows控制台中显示Unicode字符。在
要将Python脚本的输出保存到文件中,可以使用
PYTHONIOENCODING
envvar:不要在脚本中硬编码环境的字符编码,而是打印Unicode。这些示例表明,同一个脚本可以使用不同的编码和不同的方法打印到控制台和文件。在
另一种解决方案是不使用损坏的Windows控制台进行常规unicode输出。Tk文本小部件(作为tkinter文本实例访问)可以处理所有BMP字符,只要所选字体可以。在
既然闲置使用了tkinter,它也可以。运行一个空闲的编辑器文件(调用它py.tem公司)包含
在Shell窗口中打印以下内容。在
^{pr2}$可以使用-m和-r从控制台通过Idle运行文件
这将打开一个shell窗口并打印与上面相同的内容。或者您可以用标签或文本小部件创建自己的tk窗口。在
相关问题 更多 >
编程相关推荐