如何使 Python 字符串与它们使用的 Python 版本无关?
我正在尝试维护适用于 Python 2.7 和 Python 3.* 的代码,但我遇到了很多违反直觉的错误。例如,这在 Python 2.7 中完美运行:
print('Job: %s' % job)
但它在 Python 3.3 中失败并出现错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 27: ordinal not in range(128)
如果我将该行更改为:
print(('Job: %s' % job).encode('utf-8'))
在 Python 3.3 中修复了它...但是破坏了 Python 2.7,它现在抛出完全相同的错误。
尝试在 Python 中管理字符串感觉就像玩打地鼠游戏。您如何可靠地对字符串进行编码,以便它们适用于所有版本的 Python?
请您参考如下方法:
这应该适用于 Python 2.7 和 3.3+ :
print(u'Job: {}'.format(job))
如果仍然失败,那么您的问题存在于其他地方。 job 已经被编码,您需要正确定义 __str__ 和 __unicode__ 魔法。
