重温 Sys.setdefaultencoding("utf-8"):为什么不应该在 Python 脚本中使用它
在 Python 脚本中,它经常看到开头使用sys.setdefaultencoding("utf-8")将默认的ASCII编码切换为UTF-8。但是,强烈建议不要这种做法,并且在 Python 3 中已过时。
避免使用 sys.setdefaultencoding("utf-8") 的原因
根据官方Python文档:
- 它仅在Python启动期间可用,并且应该从系统范围的模块(例如 sitecustomize.py),在 Python 运行时之前访问。
- 评估 sitecustomize.py 后,sys.setdefaultencoding() 函数将从 sys 模块中删除,使其无法访问。
- 要在启动后访问它,需要重新加载 hack,这不是推荐。
使用 sys.setdefaultencoding("utf-8")
-
潜在不一致的行为:可能会导致意外行为,因为它可能与稍后设置的其他编码设置冲突脚本。
-
性能下降:重新加载系统范围的模块会显着影响性能。
-
Python 3 中弃用:此函数已被标记在 Python 3 中已过时,如果调用会引发错误,表明不应该
推荐解决方案
在 Python 3 中,默认编码硬连接为 UTF-8,这使得 sys.setdefaultencoding() 变得多余。相反,建议使用 Unicode 和编码函数,例如 str.encode("utf-8") 来显式地将字符串与特定编码相互转换。
进一步阅读参考
- [虚幻sys.setdefaultencoding](http://blog.ianbicking.org/illusive-setdefaultencoding.html)
- [从 Python 打印 Unicode](http://nedbatchelder.com/blog/200401/printing_unicode_from_python.html)
- [一环统治一切: Unicode](http://www.diveintopython3.net/strings.html#one-ring-to-rule-them-all)
- [关于 Python 和 Unicode 的所有内容](http://boodebr.org /main/python/all-about-python-and-unicode)
- [正确获取 Unicode Python](http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python)
以上是为什么 Python 3 中不应该使用 sys.setdefaultencoding(\'utf-8\')` ?的详细内容。更多信息请关注PHP中文网其他相关文章!