我正在开发一个python应用程序,它可以在多个平台上将多种语言的文本打印到控制台。 该程序在所有UNIX平台上都运行良好,但在windows中,在命令行中打印unicode字符串时出错。
已经有相关线索: (Windows cmd encoding change causes Python crash) 但我在那里找不到具体的答案。
例如,对于以下亚洲文本,在Linux中,我可以运行:
>>> print u"\u5f15\u8d77\u7684\u6216".encode("utf-8")
引起的或
但在windows中我得到:
>>> print u"\u5f15\u8d77\u7684\u6216".encode("utf-8")
σ╝ץΦ╡╖τתהµטצ
我成功地用消息框显示了正确的文本:
>>> file("bla.vbs", "w").write(u'MsgBox "\u5f15\u8d77\u7684\u6216", 4, "MyTitle"'.encode("utf-16"))
>>> os.system("cscript //U //NoLogo bla.vbs")
但是,我希望能够在windows控制台中完成,而且最好不需要在python代码之外进行太多配置(因为我的应用程序将分发到许多主机)。
这可能吗?
编辑:如果不可能-我很乐意接受在显示unicode的windows中编写控制台应用程序的一些其他建议,例如,另一个windows控制台的python实现
使用不同的控制台程序。以下在mintty中工作,mintty是Cygwin中的默认终端模拟器。
有其他控制台可供选择的Windows,但我没有评估他们的Unicode支持。
它仅仅来自于cmd和powershell console不支持可变宽度字体。固定字体不包含中文脚本。Cygwin也是如此。
Putty更先进,支持西里尔文、越南语、阿拉伯文字的可变宽度字体,但目前还没有中文。
高温高压
有一个WriteConsoleW解决方案提供unicode argv和stdout(print),但不提供stdin:Windows cmd encoding change causes Python crash
我唯一修改的是sys.argv以使其保持unicode。最初的utf-8版本出于某种原因对其进行了编码。
相关问题 更多 >
编程相关推荐