【发布时间】:2017-05-24 12:38:21
【问题描述】:
一个简单的打印函数
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 中以某种方式失败。
我在这里做错了什么?
编辑:在烧瓶应用程序中调用函数失败,在 python 控制台中工作。
【问题讨论】:
-
我刚刚从命令行在多个版本的python 2.6.6、2.7.9、2.7.10 和2.7.13 上尝试了您的代码,并且您的代码运行良好。
-
听起来您的控制台语言环境已损坏并且默认为 ASCII。您使用的是什么操作系统?
-
我假设您使用的是 Un*x 系统。见:stackoverflow.com/a/35839964/1554386
-
在没有更多信息的情况下,我投票将其关闭为“不可重现”。这可能是一个简单的语言环境问题。
-
@AlastairMcCormack 都是 'UTF-8'
标签: python python-2.7 unicode python-unicode