У меня есть приложение Django 1.8, работающее на сервере с Python 3, и я получаю UnicodeDecodeError при регистрации и печати строк со специальными символами.Python3 UnicodeDecodeError
>:python --version python 3.4.3
Например, если я пытаюсь запустить глупый метод в оболочке:
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 ... формат
Здесь важна переменная среды LC_ *, используемая вашим сервером process_, а не те, которые определены для вашей учетной записи пользователя. Вы можете проверить конфигурацию вашего процесса и конфигурацию сервера. –
@brunodesthuilliers Вы имеете в виду '/ proc//environ'? LC_CTYPE = UTF-8 и LANG = en_US.UTF-8, никакие другие переменные кодировки там не установлены. –
Ire
Я имею в виду «переменные среды для процесса, который будет использоваться в вашем процессе». Жаль, что мне не приходилось сталкиваться с такой проблемой уже несколько лет (благодаря нашему sysadmin), поэтому Я не помню всех подробностей: -/ –