Python3 UnicodeDecodeError

时间:2015-11-27 10:24:19

标签: python django python-3.x

我在使用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 "<console>", line 1, in <module>
  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 ...

1 个答案:

答案 0 :(得分:2)

LC_CTYPE格式如下:en_US.UTF-8(点后的字母映射) 然后python将它用作日志和io的默认编码。