【发布时间】:2017-06-06 20:58:55
【问题描述】:
大家好,我正在 pycharm 社区版 2016.3.2 的一个项目中使用 python 3.6.0。每当我使用编解码器对输入流进行编码时,我的程序中就会出现这个奇怪的错误:
import codecs
import sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
sys.stderr = codecs.getwriter('utf8')(sys.stderr)
print("something")
问题是我的程序总是以退出代码 1 退出,这是控制台输出:
Traceback (most recent call last):
File "C:/Users/jhonsong/Desktop/restfulAPI/findARestaurant.py", line 9, in <module>
print("something")
File "C:\Python36-32\lib\codecs.py", line 377, in write
self.stream.write(data)
TypeError: write() argument must be str, not bytes
Process finished with exit code 1
但我的输入是一个字符串,为什么 codecs.write 认为我给它字节输入?
【问题讨论】:
-
这听起来是个坏主意 - 并非所有控制台都支持 UTF-8。您应该打印并允许 Python 的语言环境检测计算出适当的编码
-
@AlastairMcCormack 我正在尝试完成这个在线课堂挑战:link,它随着foursquare 的API 和可能的多语言结果返回而发展。您建议将结果写入文件而不是控制台?
-
我没有访问权限:(
标签: python python-3.x encoding utf-8