我们说
s = u"testu0627u0644u0644u0647 u0623u0643u0628u0631u7206u767Au043Eu043Bu043Eu043Bu043E"
如果我尝试直接打印它,
>>> print s Traceback (most recent call last): File "<stdin>",line 1,in <module> UnicodeEncodeError: 'cp932' codec can't encode character u'u0627' in position 4: illegal multibyte sequence
所以我把这个控制台从Python变成了UTF-8(否则它不会理解我的input)。
import win32console win32console.SetConsoleOutputCP(65001) win32console.SetConsoleCP(65001)
然后输出编码为utf-8的string,因为Python不知道chcp 65001是UTF-8(一个已知的bug )。
dl / win32 loaderror
HBITMAP从位
如何从其他窗口代码中将已经存在的打开窗口置于其他窗口的顶部?
在Windows上安装协议缓冲区
>>> print s.encode('utf-8') testالله أكبر爆発ололоTraceback (most recent call last): File "<stdin>",in <module> IOError: [Errno 0] Error
正如你所看到的,它打印成功,直到它命中一个换行符,然后它会抛出一个IOError。
以下解决方法工作:
def safe_print(str): try: print str.encode('utf-8') except: pass print >>> safe_print(s) testالله أكبر爆発ололо
但是一定有更好的办法。 有什么build议么?
在Windows XP Embedded上,禁用每个控件的C#Winforms应用程序中的右键单击(按住)
JavaFX淡出舞台并closures
无法安装JDK 7
Scrapy返回相同的信息80+次
.Net使用特殊文件夹符号
在python utf8 windows中 搜索带来的第一个结果是在Windows XP上使用UTF8打印python的问题,这个控制台描述了从Python打印Windows中的utf8的问题。
我没有在Windows上测试它,但在这里你可以得到一个小的初始化脚本为win / linux来正确设置输出编码,包括日志接口等。该模块还使输出颜色(包括更新'日志'界面)? 但是你可以很容易地把它们关掉:-)。
#!/usr/bin/env python # -*- coding: utf-8 -*- from setupcon import setup_console setup_console('utf-8',False)
和彩色变体:
import setupcon setupcon.setup_console() import logging #... if setupcon.ansi: logging.getLogger().addHandler(setupcon.ColoredHandler())
如果解决方案适用于您,您可以阅读这里的文档: http : //habrahabr.ru/blogs/python/117236/ ,在俄罗斯,或我/有人可以翻译它为您需求:-)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。