Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在我编写的每个Python脚本中都包含这个样板代码吗?_Python_Python 3.x_Unicode - Fatal编程技术网

我应该在我编写的每个Python脚本中都包含这个样板代码吗?

我应该在我编写的每个Python脚本中都包含这个样板代码吗?,python,python-3.x,unicode,Python,Python 3.x,Unicode,我的老板让我在我编写的Python 3脚本中加入以下几行: import sys import codecs sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) 他说,这是为了防止在非UTF8地区打印Unicode字符时出现Unicode编码错误。我想知道这是否真的有必要,为什么Python在没有样板代码的情况下不能正确处理编码/解码 让Python脚本与不同的操作系统环境兼容的最具Python风格的方法是什么?这个样板代码

我的老板让我在我编写的Python 3脚本中加入以下几行:

import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) 
他说,这是为了防止在非UTF8地区打印Unicode字符时出现Unicode编码错误。我想知道这是否真的有必要,为什么Python在没有样板代码的情况下不能正确处理编码/解码

让Python脚本与不同的操作系统环境兼容的最具Python风格的方法是什么?这个样板代码到底做了什么?

提供的答案从Python邮件列表中很好地摘录了您的问题。我想没有必要这样做

Python中唯一支持的默认编码是:

Python 2.x:ASCII
Python3.x:UTF-8

如果你改变这些,你就只能靠自己了,奇怪的事情就会开始 发生。默认编码不仅影响翻译 Python与外部世界之间,也都是内部世界 8位字符串和Unicode之间的转换

黑客喜欢pango模块中发生的事情(设置默认值 通过重新加载站点模块以获取 sys.setdefaultencoding()API back)是完全错误的,并且将 由于Unicode对象缓存其默认值,导致严重问题 编码表示法

请不要启用基于区域设置的默认编码

如果您只想获得stdout和 stdin正确设置管道时,应改为更改 .encoding属性(仅限)

--
马克·安德烈·伦伯格
eGenix.com


您是否阅读了投票最多的答案,以“Eek!这是Python 2中的一个众所周知的习惯用法吗?对我来说,这似乎是一个危险的错误。”此外,这被推荐用于python2,甚至问题明确地说它在python3中不起作用!在其他地方,对同一问题的回答指出,“sys.stdout在Python3中处于文本模式。因此您可以直接向其编写unicode,而Python2的习惯用法不再需要。”