我在使用Python 3的服务器上运行了Django 1.8应用程序,在记录和打印带有特殊字符的字符串时,我得到了UnicodeDecodeError.
>:python –version
???python 3.4.3
例如,如果我尝试在shell中运行一个愚蠢的方法:
def print_test():
print('Test: èè') # any 'special char' like ? ? é ?...
我得到一个堆栈跟踪:
>>> print_test()
Traceback (most recent call last):
File "", line 1, in
File "/home/sailingadmin/sailing-admin/utest.py", line 2, in print_test
print('This is a test: \xe8\xe8')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 16-17: ordinal not in range(128)
与print相同(u’Test:èè’)
为什么会发生这种错误?
utest.py以utf-8编码(源文件默认为Python 3)
>:echo $LC_CTYPE
???UTF-8
所有日志记录和打印都会引发UnicodeEncodeError …