我的老板让我在我编写的Python3脚本中放入以下几行(来自this answer):
import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) 他说,这是为了防止UnicodeEncodeErrors在非UTF8 8语言环境中打印Unicode字符.我想知道这是否真的是必要的,为什么Python在没有样板代码的情况下不能正确地处理编码/解码。
使Python脚本与不同操作系统环境兼容的最Python方法是什么?这个样板代码到底是做什么的?
发布于 2016-08-27 10:17:25
here提供的答案从有关您的问题的Python列表中摘录得很好。我想没必要这么做。
Python中唯一受支持的默认编码是: Python2.x: ASCII Python 3.x: UTF-8 如果你改变了这些,你就只能靠自己了,奇怪的事情就会开始发生。默认编码不仅影响Python和外部世界之间的转换,而且影响8位字符串和Unicode之间的所有内部转换。 类似pango模块中正在发生的事情(通过重新加载站点模块将默认编码设置为'utf-8‘以使sys.setdefaultencoding() API返回)是完全错误的,并且会导致严重的问题,因为Unicode对象缓存它们的默认编码表示。 请不要启用基于区域设置的默认编码。 如果您想要实现的只是正确设置管道的stdout和stdin编码,则应该更改这些管道的.encoding属性(仅)。 -- 马克·安德烈·伦伯格 eGenix.com
https://stackoverflow.com/questions/39179738
复制相似问题