def TODO(message):
print(type(message))
print(u'\n~*~ TODO ~*~ \n %s\n ~*~\n' % message)
被称为这样
TODO(u'api servisleri için input check decorator gerekiyor')
导致此错误的原因是
<type 'unicode'>
Traceback (most recent call last):
File "/srv/www/proj/__init__.py", line 38, in <module>
TODO(u'api servisleri için input check decorator gerekiyor')
File "/srv/www/proj/helpers/utils.py", line 33, in TODO
print(u'\n~*~ TODO ~*~ \n %s\n ~*~\n' % message)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe7' in position 32: ordinal not in range(128)
但它在ipython控制台中运行正常。
In [10]: TODO(u'api servisleri için input check decorator gerekiyor')
<type 'unicode'>
~*~ TODO ~*~
api servisleri için input check decorator gerekiyor
~*~
这段代码在Python 2.7.12上可以运行,但在2.7.9上出现了错误。
我在这里做错了什么?
编辑:当在Flask应用程序中调用此函数时会失败,在Python控制台中可以正常工作。
import locale; locale.getpreferredencoding()
。 - Alastair McCormack